Estou usando um grande número de redirecionamentos 301, que estão falhando em um novo servidor da Web.
Estamos em testes de pré-produção no novo servidor da web, antes de migrar os sites, mas alguns sites estão falhando com 500 Internal Server Error . O conteúdo, os bancos de dados e os arquivos, são espelhados do antigo para o novo, para que possamos testar se todos os sites funcionam corretamente.
Eu acompanhei esse problema para a instrução mod_alias 'Redirect , que é usada em .htaccess para redirecionar visitantes e mecanismos de pesquisa de conteúdo antigo para páginas novas.
Aparentemente, o servidor Apache requer que o destino seja um URL completo, incluindo protocolo e nome do host.
Redirect 301 /directory/ /target/ # Not Valid
Redirect 301 /main.html / # Not Valid
Redirect 301 /directory/ http://www.example.com/target/ # Valid
Redirect 301 /main.html http://www.example.com/ # Valid
Isso contradiz a documentação do Apache para o Apache 2.2 , que afirma:
The new URL should be an absolute URL
beginning with a scheme and hostname,
but a URL-path beginning with a slash
may also be used, in which case the
scheme and hostname of the current
server will be added.
É claro que verifiquei que estamos usando o Apache 2.2 no servidor antigo e no novo. O servidor antigo é uma caixa do Gentoo com o Apache 2.2.11, enquanto o novo é uma caixa do RHEL 5 com o Apache 2.2.3.
A solução alternativa seria alterar todos os caminhos para URLs completas ou converter as instruções em regras mod_rewrite, mas preferiria o comportamento documentado.
Quais são suas experiências?