Apache-Äquivalent von lighttpd url.rewriteonce?
-
13-09-2019 - |
Frage
Ich habe meine Bewerbung Einstiegspunkt wie diese.
/app/index.php <-- this is the main dispatcher.
Und anwendungsspezifischen Ordner unter / app /
/app/todo/
/app/calendar/
/app/bugtrack/
Jeder Anwendungsordner cotains anwendungsspezifische Dateien.
Ich möchte alle Anfragen Unders App passieren /app/index.php passieren.
Damit.
/app/todo/list/today -> goes to /app/index.php
/app/ -> goes to /app/index.php
/app/bugtrack/anything/else goes to /app/index.php
Auf meiner lighttpd Testmaschine kann ich es leicht durch eine Regel wie diese zu schreiben.
url.rewrite-once = (
"^\/app\/todo\/*" => "/app/index.php",
"^\/app\/calendar\/*" => "/app/index.php",
"^\/app\/bugtrack\/*" => "/app/index.php",
)
Jetzt muss es auf Apache funktioniert .htaccess und mod_rewrite.
Aber egal was ich tue, es funktioniert nicht.
Ich schrieb in /app/.htaccess
RewriteEngine on
RewriteRule .* index.php [QSA]
Es funktioniert für / app / und / app / todo / aber nicht für / app / todo / Liste / heute zum Beispiel.
Jeder kann eine Idee geben Sie mir, wie es zu tun?
Lösung
RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Was dies bedeutet ist, wenn die Anforderung keine Dateinamen oder ein Verzeichnis ist, schreiben sie index.php. Dann $_SERVER[REQUEST_URI]
überprüfen.