Eu tenho 5 servidores de produção que estão executando o FreeBSD 9.2, mas estamos planejando a transição para o CentOS. Por causa disso, estou tentando configurar algumas máquinas virtuais para emular nosso ambiente de servidor de produção usando o CentOS 6.6. Eu configurei tudo e funciona muito bem, salve uma única regra de reescrita.
<Directory /var/www/html/www/trunk/amapi>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</Directory>
<Directory /var/www/html/www/trunk/amapi/public>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</Directory>
<Directory /var/www/html/www/trunk>
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*start\.php
RewriteRule ^start.php/?(.*)$ $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ start.php/$1?%{QUERY_STRING} [L]
</Directory>
As duas primeiras regras de reescrita são para uma API de back end usando o Phalcon e funcionam perfeitamente em ambos os ambientes. A terceira regra de reescrita é capturar tudo para redirecionar todas as solicitações que não correspondem a um arquivo real para start.php, que tenta combiná-las a um módulo Phalcon e depois a uma página 404, se nenhuma rota for correspondida.
Por alguma razão, ele funciona sob o FreeBSD que está executando o Apache 2.2.27, mas não sob o CentOS que, no momento, está executando o Apache 2.2.15. Esta é uma regra de reescrita muito simples que deve funcionar em qualquer versão do Apache sem problemas, mas o apache continua jogando um 404 quando tento acessar o arquivo. Estou esquecendo de algo? Obviamente, a configuração do SSL e as opções específicas estão faltando no código exibido, mas estas são a ordem em que as reqrites aparecem no arquivo ssl.conf.
Obrigado antecipadamente
Atualização: os registros do Apache Rewrite são:
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (2) init rewrite engine with requested uri /letters/custom/test
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/attc2/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/forms/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/grafx/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '^/xport/(.*)$' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (3) applying pattern '.*' to uri '/letters/custom/test'
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (4) RewriteCond: input='' pattern='!.*mydomain.com/.*$' [NC] => matched
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (4) RewriteCond: input='/letters/custom/test' pattern='\.(jpg|gif|png)$' => not-matched
10.1.1.135 - - [24/Feb/2015:17:39:17 --0500] [trunk.mydomain.com/sid#7f18f3072f98][rid#7f18f36099b8/initial] (1) pass through /letters/custom/test