Nome de domínio de redirecionamento Apache mod-rewrite usando querystring
-
22-07-2019 - |
Pergunta
Temos um cliente que tem muitas filiais em todo o Reino Unido. Alguns de seus ramos têm seus próprios sites com seus próprios nomes de domínio. O cliente possui um sistema construído em parte onde visita:
www.client.com/aboutus.php?id=branchId
mostra a página About Us para essa filial em particular. O que eu preciso é uma maneira de mapear domínios específicos para o seu ramo (tudo isso é armazenado em um dB no momento) para que
www.client.com/aboutus.php?id=4
mapeia para
www.branchid4.com/aboutus.php
Solução
Isso funciona para mim. Não tenho certeza se seus domínios podem funcionar com um único conjunto de regras gerais (ou seja, pegue o ID e depois use -o no reescrita), caso contrário, você precisará repetir as últimas 3 linhas por URL
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?client.com$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /aboutus\.php\?id=4\ HTTP/
RewriteRule ^.*$ http://www.branchid4.com/about.php? [R=301,L]
Outras dicas
Você pode tirar a parte crucial do nome do host e passá -lo para o seu script:
RewriteEngine on
RewriteCond %{QUERY_STRING} !(^|&)branchName=
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$
RewriteRule .* $0?branchName=%1 [L,QSA]