A reconfiguração do Apache 2.2 com o Alias só funciona no modo [R]

1

Eu tenho uma regra de mod_rewrite para passar solicitações para um front controller, mas parece que não consigo trabalhar sem um sinalizador [R] .

A configuração não é totalmente direta, eu tenho um diretório com alias dentro da raiz da web e estou tentando reescrever nesse diretório. Se eu ignorar esse diretório, posso reescrever bem.

Se eu usar:

Alias /main /some/path/
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule /main/(.*)$ /main/index.php/$1 [R]

Ele funciona como esperado, e index.php recebe o valor como um parâmetro, mas como está usando o sinalizador [R], uma solicitação para /main/some-param termina como um URI que termina em /main/index.php/some-param e eu estou apontando para que seja transparente.

Sem o [R] , a solicitação resulta em um 404 e uma entrada de log ao longo das linhas de File does not exist: /mywebroot/main , o que parece estranho.

Há algo sobre o uso de um Alias aqui que está causando isso ou é um erro com a própria regra?

    
por Simon 16.03.2012 / 19:12

1 resposta

3

É o Alias que está causando o problema - a versão reescrita é considerada um caminho para um arquivo real (um caminho absoluto do sistema de arquivos ou um relativo ao DocumentRoot ). Se você adicionar um sinalizador PT , o Alias será aplicado corretamente.

    
por 16.03.2012 / 19:18