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?
.htaccess
mod-rewrite
rixter
fonte
fonte
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.Respostas:
Eu acredito que você precisa colocar seus valores de teste da seguinte forma:
https://httpd.apache.org/docs/trunk/rewrite/remapping.html (seção: Reescreva a sequência de consultas)
Você pode ter um espaço em um dos seus valores, eu acho. Tente começar, pode corrigi-lo. Geralmente não uso "para reescrever, mas geralmente não uso espaços, bem, quero dizer, nunca uso espaços nesses tipos de nomes.
Apenas como um aparte,
realmente não tem sentido, porque
já significa: tudo isso. Então, começar e terminar tudo é um pouco redundante, acredito.
Um possível erro alternativo é que você simplesmente perdeu uma quebra de linha na série 500, pode verificar isso usando a visualização do número da linha no seu editor de código.
fonte