Redirect 301 ou RedirectMatch 301 não funciona para mim

Redirect 301 ou RedirectMatch 301 não funciona para mim

Então este é o meu cenário:

Tenho 1 IP estático e 2 servidores. 1 servidor é um servidor web e o outro é um servidor de correio. Eu tenho um roteador como firewall de hardware com todas as portas configuradas que exigem passagem para endereços IP internos.

Se um usuário digitar o URLhttp://www.domínio.comeles veem aquele site. Se o usuário quiser acessar o webmail ele digita a urlhttp://mail.domain.commas ainda vejohttp://www.domínio.com

Eu configurei o domínio do webmail para ser acessível através da porta 8080 no servidor de e-mail e se o usuário digitar o URLhttp://mail.domínio.com:8080funciona sem problemas, mas não comhttp://mail.domain.com.

Então este é o meu problema:

No meu httpd.conf eu quero configurar um Redirect 301 para que quando o usuário digitarhttp://mail.domain.comeles são redirecionados parahttp://mail.domínio.com:8080

Prefiro não usar .htaccess e manter as diretivas no httpd.conf

Obrigado...

Responder1

Você precisará criar um host virtual em seu servidor web principal que responda às solicitações da web para o endereço “mail.domain.com”. Dê uma olhada noHost virtual baseado em nomedocumentação no site do Apache. Você também precisará de uma regra mod_rewrite para fazer o redirecionamento. Sua configuração ficaria mais ou menos assim:

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName mail.domain.com
  RewriteEngine On
  RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L]
</VirtualHost>

Responder2

Há pelo menos duas maneiras de fazer isso:

  1. Criar 2anfitrião virtualum para www.domain.com e outro para mail.domain.com e depois coloque sua diretiva RedirectMatch no segundo.
    Você também pode usar oProxyPassdiretiva no host virtual mail.domain.com para fazê-lo funcionar como um proxy reverso e fazer com que mail.domaine.com:80 funcione diretamente sem redirecionamento

  2. Use mod_rewrite assim para redirecionar apenas para o URL mail.domain.com com uma regra como essa

    RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
    RewriteRule ^(.*)http://mail.domain.com:8080/US$ 1 [R = 301]

    com mod_rewrite você também pode fazer um proxy reverso com uma regra como (mail.domain.com deve resolver para o IP interno)

    RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
    RewriteRule ^(.*)http://mail.domain.com:8080/US$ 1 [P]

informação relacionada