Apache Redirect alle auf index.php mit Ausnahme der vorhandenen Dateien und Ordner

8

Ich habe index.php, das den vollständigen Pfad von $_SERVER[‘REQUEST_URI’] Variable liest. Meine Aufgabe ist, wenn Benutzer eingeben: www.domain/resource/777 redirect zu index.php mit Pfad /resource/777 und parse $_SERVER[‘REQUEST_URI’] , um etwas Logik zu tun. Aber ich habe auch echte Dateien und Ordner wie:

  • css / theme.css
  • Vermögenswerte / Vermögenswerte.js
  • resource / locale.js

Wenn ich diese Konfiguration versuche:

%Vor%

Der Client konnte nicht alle CSS- und ETS-Dateien abrufen. Wie schreibe ich die richtige Regel in Apache, um dies zu erreichen?

    
Eldar 08.12.2015, 06:32
quelle

5 Antworten

6

Wenn Sie Apache 2.2.16 oder höher verwenden, können Sie Umschreibregeln vollständig durch eine einzige Direktive ersetzen:

%Vor%

Siehe Ссылка

Wenn eine Anfrage einen Fehler 404 auslösen soll, wird im Grunde die Fallback-Ressource uri verwendet, um die Anfrage zu bearbeiten und die Variable $_SERVER[‘REQUEST_URI’] korrekt zu füllen.

    
SirDarius 08.12.2015 11:19
quelle
2

Laut wird die Dokumentation REQUEST_FILENAME nur auf den vollständigen lokalen Dateisystempfad ausgewertet zu der Datei, wenn der Pfad bereits vom Server bestimmt wurde.

Kurz gesagt bedeutet dies, dass die Bedingung funktioniert, wenn sie sich in einer .htaccess -Datei oder in einem <Directory> -Abschnitt in Ihrer httpd.conf befindet, aber nicht, wenn sie sich nur innerhalb einer <VirtualHost> befindet. In letzterem Fall können Sie es einfach in ein <Directory> -Tag umbrechen, damit es funktioniert.

%Vor%     
Matt Raines 01.03.2016 23:27
quelle
1

Ihre Regel ist in Ordnung. Problem mit CSS / JS / Bild ist, dass Sie relative Pfad verwenden, um sie aufzunehmen.

Sie können dies direkt unter <head> Abschnitt des HTML Ihrer Seite hinzufügen:

%Vor%

, sodass jede relative URL von dieser Basis-URL und nicht von der URL der aktuellen Seite aufgelöst wird.

Behalte auch diese Regel in deinem .htaccess:

%Vor%     
anubhava 08.12.2015 06:55
quelle
0

Sie können das Fehlerdokument in Ihrer htaccess-Datei so einstellen, dass index.php verwendet wird und dann eine nicht existierende Datei angefordert wird:

%Vor%     
mario.klump 08.12.2015 06:35
quelle
0

Für jetzt half nur mir das:

%Vor%     
Eldar 08.12.2015 10:50
quelle

Tags und Links