Ter "Redirect permanent" tem precedência sobre mod_rewrite no .htaccess

2

Eu organizei meu enorme arquivo .htaccess por Redirect permanent primeiro, o que eu gostaria de ter executado se encontrado. Nesses casos, eu não quero mais tarde mod_rewrite processado.

Existe alguma maneira de conseguir isso?

Exemplos:

Redirect permanent /products/example.aspx http://www.example.com/products/example/

RewriteCond %{REQUEST_URI} products/([1-9a-zA-Z\s-]+)/
RewriteRule ^products/([0-9a-zA-Z\s-]+)/tutorials(/|\.php)$ /products/$1/help/ [R=permanent,L]

Embora acima não entre em conflito, meu arquivo .htaccess tem 60k de tamanho e há alguns "Redirect permanent" simples que parecem ser ignorados porque um RewriteRules posterior (que, por exemplo, redireciona um padrão)

    
por Tom 11.03.2013 / 23:29

1 resposta

4

Colocar instruções de "Redirecionamento" antes de "RewriteRule" em um arquivo .htaccess não significa que elas sejam executadas primeiro. RewriteRules são executados antes das diretivas Redirect e Alias. Eles são manipulados por módulos diferentes, e o mod_rewrite é chamado primeiro. Por essa razão, às vezes eu uso uma reescrita para curto-circuito em todas as declarações de alias e redirecionamento.

Sugiro não misturar redirecionamentos e regravações e converter seus redirecionamentos em reescritos e adicioná-los ao início de sua lista ou reescrever.

    
por 12.03.2013 / 11:37