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?

Foi útil?

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].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top