Como eu faço uma regra mod_rewrite que usa o nome do subdomínio para reescrever o URL?

1

Como faço uma regra mod_rewrite que usa o nome do subdomínio para reescrever o URL?

O que eu quero fazer é algo assim:

Encaminhe os pedidos do link PARA: link

Não precisa ser um proxy ativo; Pode ser apenas um tipo de meta-atualização ou um encaminhamento de URL básico. Parece que isso seria um cenário comum, mas não consigo encontrar um exemplo na internet. Muitos exemplos na rede de uma reescrita de URI, mas não muitos sobre uma reescrita de URL completa (como estou tentando fazer acima).

    
por djangofan 25.04.2011 / 21:36

2 respostas

2

Para isso, você pode usar referências anteriores.

RewriteEngine On
RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com  [NC]
RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L]

No entanto, note que isso irá acabar redirecionando novamente assim que o 301 for seguido, se o redirecionamento acontecer no HTTP use apenas o seguinte bloco.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ([^\.]+)\.domain\.com  [NC]
RewriteRule ^(.*)$ https://appname.company.com/appname/login.jsp?agencyName=%1 [R=301,L]

% 1 refere-se à primeira "captura" de regex na linha RewriteCond, se você utilizasse múltiplos pontos% 2 e assim por diante se tornariam disponíveis.

    
por 25.04.2011 / 22:09
2

Você pode usar o RewriteCond no valor HTTP_HOST para fazer isso. Há alguns exemplos desse uso no Guia de reconfiguração de URLs do Apache . Você faria algo assim:

RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.company\.com$
RewriteRule (.*) https://appname.company.com/$1?agencyName=%1 [R,L,QSA]

Isso não foi testado e pode não funcionar como está, mas deve apontar você na direção certa.

    
por 25.04.2011 / 21:54