Por que minha regra de reescrita resulta em “400: Bad Request”?

2

Eu tenho essas regras de reescrita na configuração do meu site:

RewriteEngine on
RewriteRule ^app.php - [L]
RewriteRule ^(.*)$ app.php$0 [L]

O objetivo é que todos os pedidos sejam anexados ao front controller "app.php". A última linha das regras está fazendo com que meu servidor responda com "400: Bad Request", não importa qual caminho eu tente, até mesmo um caminho vazio. Eu habilitei o registro de reescrita e tentei dois caminhos: "/" e "/ login". Isto é o que o log diz:

(2) init rewrite engine with requested uri /
(3) applying pattern '^app.php' to uri '/'
(3) applying pattern '^(.*)$' to uri '/'
(2) rewrite '/' -> 'app.php/'
(2) local path result: app.php/
(2) init rewrite engine with requested uri /login
(3) applying pattern '^app.php' to uri '/login'
(3) applying pattern '^(.*)$' to uri '/login'
(2) rewrite '/login' -> 'app.php/login'
(2) local path result: app.php/login

De acordo com os registros, ele deve ser bem-sucedido. Se eu remover a última linha das regras de reescrita e visitar o URL "app.php / login", ela funcionará como esperado.

Alguém sabe por que isso não está funcionando?

Nota: Não há erros nos registros de erros.
Observação: Os caminhos resultantes ("app.php /", "app.php / login ") funciona perfeitamente quando a última regra de reescrita é removida.

    
por Hubro 29.05.2013 / 10:36

1 resposta

3

Eu percebi isso. Por alguma razão eu tive que acrescentar um "/" ao caminho de reescrita:

RewriteRule ^(.*)$ /app.php$0 [L]

Caso contrário, aparentemente, qualquer caminho seria reescrito para:

example.comapp.php/

Eu tenho outro servidor com a mesma versão do Apache, onde isso não ocorreu, então ainda estou confuso, mas pelo menos funciona.

    
por 29.05.2013 / 10:58