
Migrei para um novo servidor e sempre que tento usar meu site com o prefixo www recebo um erro interno de servidor 500. Isso funcionou perfeitamente no meu host anterior. Aqui está um trecho do arquivo htaccess que se refere ao www - em nenhum outro lugar ele se refere ao www.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^blog/ - [L]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1
RewriteRule ^search/(.*)/(.*)/(.*)/(.*) /search.php?searchfor=$1&sortby=$2&page=$3&searchterm=$4
RewriteRule ^confirmemail/(.*) /confirmemail.php?code=$1
RewriteRule ^resetpassword/(.*) /resetpassword.php?code=$1
RewriteRule ^resendconfirmation/(.*) /resendconfirmation.php?userid=$1
RewriteRule ^categories/ /categories.php
RewriteRule ^([-_~*a-zA-Z0-9]+)(\/)?$ /memberprofile.php?username=$1
RewriteRule ^browse/audios/(.*)/(.*)/(.*)/(.*) /audios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^browse/categories/audios/(.*)/(.*)/(.*)/(.*) /categoryaudios.php?sortby=$1&filter=$2&page=$3&title=$4
RewriteRule ^audios/(.*)/(.*) /playaudio.php?audioid=$1&title=$2
RewriteRule ^download/audio/(.*)/(.*) /downloadaudio.php?AUDIOID=$1&title=$2
RewriteRule ^members/audios/(.*)/(.*) /memberaudios.php?pid=$1&username=$2
RewriteRule ^syndicate/audios/(.*)/(.*) /syndicateaudios.php?filter=$1&title=$2
</IfModule>
O que mais posso verificar?
Eu configurei este domínio com o Painel de Controle Plesk - talvez seja esse o problema?
Obrigado a todos por qualquer ajuda
Atualizar
Os logs de erros mostram isso quando vou ao meu site usando o prefixo www.
[Quarta, 08 de setembro, 13:57:24 2010] [erro] [cliente xx.xxx.xx.xxx] A solicitação excedeu o limite de 10 redirecionamentos internos devido a um provável erro de configuração. Use 'LimitInternalRecursion' para aumentar o limite, se necessário. Use 'LogLevel debug' para obter um backtrace.
Atualização 2
Meu site tem um alias de servidor no arquivo httpd.confda forma serverAlias www.mydomain.com
- isso pode causar loop de redirecionamento?
Atualização 3
Não consegui fazer com que o Apache criasse ou gravasse no log de reescrita e não quero reiniciar muitos serviços, pois há pessoas usando o site.
Adicionei uma recompensa a esta pergunta porque realmente preciso de ajuda!
Responder1
Isso é interessante porque os logs indicam que um redirecionamento está acontecendo, mas você não possui nenhuma regra que use o sinalizador [R]. No entanto, quando uma regra inclui http://... o sinalizador [R] é redundante, então o
RewriteRule ^(.*)$ http://mydomain.com/$1
regra é a provável candidata a causar o problema.
Se eu fosse você, tentaria colocar [R=301,L] no final dessa linha para garantir que as outras regras não estejam de alguma forma usando o nome do host anterior, resultando de alguma forma em um loop.
Outra possibilidade é que o PHP esteja envolvido no loop de redirecionamento. Você pode acessar o site www com o Firefox e o plugin livehttpheaders e compartilhar os cabeçalhos aqui? Isso pode esclarecer o que está causando o loop de redirecionamento.
Não acho que o fato do Plesk estar envolvido tenha algo a ver com isso, e não, não acho que o ServerAlias tenha algo a ver com isso. Isso permite apenas que a mesma configuração seja veiculada para ambos os hosts virtuais: www.example.com e example.com.
Espero que ajude!
Responder2
Há também umreescrever registro, ative-o e veja o que acontece.
Na maioria dos casos, é uma regra reentrante.
Responder3
Que tal:
<IfModule mod_rewrite.c>
RewriteEngine On
ReWriteCond %{HTTP_HOST} !^mydomain
ReWriteRule ^(.*)$ http://mydomain.com/$1
...
</IfModule>