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:
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?
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.
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.
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:
, 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%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%