RewriteCond Exceção com REQUEST_URI para RewriteRule com novo domínio não funciona

1

A exceção a seguir não funciona. link com e sem / teste redirecionado para link , mas a exceção não deveria!

RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test$
RewriteRule ^(.*)$ http://www.example.de/foo/ [R=302,L]

Qual é o motivo?

    
por Joe Nazz 28.09.2012 / 16:11

2 respostas

9

Ele entra em conflito com a regra

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

no final do arquivo .htaccess.

Se eu adicionar uma exceção para index.php como

RewriteCond %{HTTP_HOST} ^www.domain.example$ [NC]
RewriteCond %{REQUEST_URI} !^/test$
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^(.*)$ http://www.example.org/foo/ [R=302,L]

então funciona.

    
por 01.10.2012 / 11:52
0

Descobri isso como uma solução para o meu problema, mas descobri que precisava adicionar outra regra de reescrita orientada por condicional de solicitação "raiz" para que a solução final funcionasse. Dependendo da lógica necessária, pode parecer o seguinte:

RewriteCond %{HTTP_HOST} ^www.domain.example$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /some-uri [L,R=302]

RewriteCond %{HTTP_HOST} ^www.domain.example$ [NC]
RewriteCond %{REQUEST_URI} !^/some-uri$
RewriteRule ^(.*)$ /some-uri [L,R=302]
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /some-uri [L,R=302]
    
por 10.06.2015 / 19:04