Apache equivalente a url.rewriteonce lighttpd?
-
13-09-2019 - |
Pergunta
Eu tenho o meu ponto de entrada do aplicativo como este.
/app/index.php <-- this is the main dispatcher.
pastas E específicas de aplicação em / app /
/app/todo/
/app/calendar/
/app/bugtrack/
Cada aplicação pasta de arquivos específicos do aplicativo cotains.
Eu gostaria de passar todos os pedidos unders aplicativo para passar através /app/index.php.
Assim 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
Na minha máquina de teste lighttpd eu posso facilmente fazer isso por escrito uma regra como esta.
url.rewrite-once = (
"^\/app\/todo\/*" => "/app/index.php",
"^\/app\/calendar\/*" => "/app/index.php",
"^\/app\/bugtrack\/*" => "/app/index.php",
)
Agora, precisa fazê-lo funcionar no Apache usando .htaccess e mod_rewrite.
Mas não importa o que eu faça, ele não está funcionando.
Eu escrevi o seguinte em /app/.htaccess
RewriteEngine on
RewriteRule .* index.php [QSA]
Ele funciona para / app / e / app / todo / mas não para / app / todo / list / hoje, por exemplo.
Qualquer um pode me dar alguma ideia de como fazê-lo?
Solução
RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
O que isto faz é se o pedido não é um nome de arquivo ou um diretório, reescrevê-lo para index.php. Em seguida, verifique $_SERVER[REQUEST_URI]
.