Apache équivalent de lighttpd url.rewriteonce?
-
13-09-2019 - |
Question
J'ai mon point d'entrée de l'application comme celui-ci.
/app/index.php <-- this is the main dispatcher.
application des dossiers spécifiques dans / app /
/app/todo/
/app/calendar/
/app/bugtrack/
Chaque dossier application cotains d'application des fichiers spécifiques.
Je voudrais passer toutes les demandes de l'application unders passer par /app/index.php.
Alors que.
/app/todo/list/today -> goes to /app/index.php
/app/ -> goes to /app/index.php
/app/bugtrack/anything/else goes to /app/index.php
Sur ma machine de test lighttpd je peux facilement le faire en écrivant une règle comme celui-ci.
url.rewrite-once = (
"^\/app\/todo\/*" => "/app/index.php",
"^\/app\/calendar\/*" => "/app/index.php",
"^\/app\/bugtrack\/*" => "/app/index.php",
)
Maintenant besoin de le faire fonctionner sur Apache en utilisant .htaccess et mod_rewrite.
Mais peu importe ce que je fais, il ne fonctionne pas.
J'ai écrit ce qui suit dans /app/.htaccess
RewriteEngine on
RewriteRule .* index.php [QSA]
Il fonctionne pour / app / et / app / todo / mais échoue pour / app / todo / liste / jour par exemple.
Tout le monde peut me donner une idée comment le faire?
La solution
RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Ce que cela fait est de savoir si la demande n'est pas un nom de fichier ou un répertoire, récrire à index.php. Vérifiez ensuite $_SERVER[REQUEST_URI]
.