Melhor maneira de redirecionar páginas em um servidor web apache / centos

3

Eu tenho um servidor web centos 6.5 rodando 2 sites fora de 1 endereço IP usando hosts virtuais.

domain1.com e domain2.com - ambos hospedados no mesmo servidor da web acima.

Eu preciso redirecionar cerca de 40 páginas do domínio1 para o domínio2, "por exemplo":

domain1.com/page1 -> domain2.com/new-page-1
domain1.com/welcomepage -> domain2.com/new-welcome-page
domain1.com/johnsmith -> domain2.com/elvis
domain1.com/test -> domain2.com/production

* Observe que as páginas que estou redirecionando não estão sob a mesma estrutura / nome, elas vão para uma estrutura / nome completamente diferente.

Alguém pode sugerir o que posso / preciso fazer para realizar essa tarefa?

EDITAR # 1 Eu tentei fazer isso através da seção VirtualHost no meu arquivo httpd.conf. Veja abaixo as minhas entradas.

<VirtualHost *:80>
 ServerName domain1.com
 ServerAlias www.domain1.com
 RedirectPermanent / http://www.domain2.com/page12345/
</VirtualHost>

<VirtualHost *:80>
 ServerName domain1.com
 ServerAlias www.domain1.com
 RedirectPermanent /AboutUs/Founders http://www.domain2.com/about-us-founders/
</VirtualHost>

Nas duas entradas acima, apenas a primeira está funcionando corretamente e redirecionando corretamente. O segundo está redirecionando para: link Alguma idéia?

    
por Vitaliy 08.07.2014 / 15:41

1 resposta

4

A solução mais simples, se muitas vezes é a melhor nesses casos; adicione 40 diretivas Redirecionar à configuração do domínio1 VirtualHost, onde a única opção que você precisa fazer está no status permanente ou temporário do redirecionamento:

<VirtualHost *:80>
   Servername domain1.com
   RedirectTemp /page1 http://domain2.com/new-page-1
   RedirectPermanent /welcomepage http://domain2.com/new-welcome-page
</VirtualHost>

Em resposta à edição # 1 acima:

Quando você usa várias sub-rotinas do VirtualHost com os mesmos nomes de domínio no ServerName ou no ServerAlias, apenas o primeiro é válido e os subsequentes serão ignorados.

Uma única sub-rotina do VirtualHost pode conter várias diretivas de Redirecionamento, portanto, mova a segunda diretiva de Redirecionamento para a primeira sub-rotina do virtualhost e exclua a segunda.

Segundo ler o manual no link acima realmente ajuda :

Any request beginning with URL-path will return a redirect request to the client at the location of the target URL. Additional path information beyond the matched URL-path will be appended to the target URL.
Example: Redirect /service http://foo2.example.com/service
If the client requests http://example.com/service/foo.txt, it will be told to access http://foo2.example.com/service/foo.txt

Isso corresponde exatamente ao que você observou com suas solicitações de www.domain1.com/AboutUs/Founders, que acionam RedirectPermanent / http://www.domain2.com/page12345/ que redireciona a solicitação original para www.domain2.com/page12345/AboutUs/Founders

Você pode resolver isso ordenando as linhas de redirecionamento corretamente, porque o Apache processará as diretivas de redirecionamento em ordem. Comece com o caminho de URL mais longo porque, caso contrário, ele será capturado por um redirecionamento válido em um diretório mais curto.

<VirtualHost *:80>
   Servername domain1.com
   Redirect /AboutUs/Founders http://www.domain2.com/about-us-founders/
   Redirect /AboutUs/         http://www.domain2.com/about-us/
   Redirect /index.html       http://www.domain2.com/page12345/
   RedirectMatch ^            http://www.domain2.com/page12345/
</VirtualHost>

Para redirecionar solicitações que consistem apenas no link , você usa um ^ em vez de / , mas é recomendável redirecionar explicitamente o IndexDocument também, daí a entrada /index.html.

    
por 08.07.2014 / 16:02