404 retornado embora a regra de reescrita seja correspondida

1

Eu tenho uma regra de reescrita que envia todas as solicitações para index.php :

RewriteRule ^.*$ index.php [NC,L]

(Além de RewriteEngine On , isso é tudo que existe no arquivo .htaccess )

Funciona, a menos que o caminho da solicitação comece com index/ . Nesse caso, o resultado é um 404 Not Found .

Se eu alterar o nome do arquivo de index.php para index2.php (e a regra de reconfiguração para combiná-lo), ele começará a funcionar novamente, então claramente há um conflito quando o primeiro segmento do caminho solicitado é igual ao primeiro segmento do arquivo de destino .

O mod_rewrite log contém isso (ao solicitar /index/hello , que falha ):

add path info postfix: /path/to/index.php -> /path/to/index.php/hello
strip per-dir prefix: /path/to/index.php/hello -> index.php/hello
applying pattern '^.*$' to uri 'index.php/hello'
rewrite 'index.php/hello' -> 'index.php'
add per-dir prefix: index.php -> /path/to/index.php
initial URL equal rewritten URL: /path/to/index.php [IGNORING REWRITE]

(Algumas informações de log removidas ou modificadas para facilitar a leitura.)

Meu servidor é Apache/2.2.22 .

NB: Este site, .htaccess e index.php incluído, funcionou sem problemas até que eu reinstalei o Debian em um novo servidor, então estou assumindo que há algum tipo de conflito de configuração ou bug na versão que faz acontecer agora. Eu não mudei nenhum arquivo de site.

Alguma idéia?

    
por jgivoni 11.02.2014 / 22:08

1 resposta

2

Adicione isto:

Options -Multiviews

eles geralmente não são muito legais em combinação com mod_rewrite

BTW: se isso é tudo o que você faz atualmente, use o novo FallbackResource pode ser mais eficiente. (Versão > = 2.2.16).

    
por 11.02.2014 / 23:06