Eu tenho um arquivo htaccess que começa como:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} where-can-i-find-information-about-homer-training
RewriteRule ^(.*)$ http://usersupport.homerenergy.com/customer/en/portal/articles/2186858-where-can-i-find-information-about-homer-training-? [R=301,L]
RewriteCond %{QUERY_STRING} is-homer-pro-conservative-in-its-predictions
RewriteRule ^(.*)$ http://usersupport.homerenergy.com/customer/en/portal/articles/2186859-is-homer-pro-conservative-in-its-predictions-? [R=301,L]
...
o que se aplica a 308 regras mais semelhantes. Como você pode ver, isso visa redirecionar uma lista de artigos de um site para outro, onde o elemento correspondente é o nome do artigo na parte da consulta da string GET.
Se eu apenas colocar um ou dois dos pares de RewriteCond
/ RewriteRule
s no arquivo, isso funcionará. Mas quando uso o arquivo inteiro, recebo um erro interno de 500 servidores.
Evidentemente, uma das regras está causando o erro, mas a varredura do arquivo não pode ver qual é.
Observando o log de erros, vejo uma mensagem como esta:
/var/www/html/.htaccess: RewriteCond: bad argument line '%{QUERY_STRING}'
o que não me diz muito.
Como posso saber qual regra está causando esse erro?
RewriteCond
diretiva problemática . Qual versão do Apache você está executando? Dependendo da versão, você pode (temporariamente) habilitar o log mais detalhado (erro), o que ajudará a identificar exatamente onde o erro está ocorrendo.