Apache mod-rewrite перенаправить имя домена с помощью строки запроса
-
22-07-2019 - |
Вопрос
У нас есть клиент, у которого есть много филиалов по всей Великобритании. Некоторые из их филиалов имеют свои сайты с собственными доменными именами. У клиента есть частично построенная система, где посещение:
www.client.com/aboutus.php?id=branchId
показывает страницу О нас для этой конкретной ветви. Что мне нужно, так это способ привязать определенные домены к их BranchId (в данный момент все это хранится в БД), чтобы
www.client.com/aboutus.php?id=4
отображается на
www.branchid4.com/aboutus.php
Решение
Это работает для меня. Не уверен, что ваши домены могут работать с одним общим набором правил (т.е. захватить идентификатор, а затем использовать его в rewriterule), в противном случае вам придется повторить последние 3 строки для каждого 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]
Другие советы
Вы можете извлечь важную часть из имени хоста и передать его в свой скрипт:
RewriteEngine on
RewriteCond %{QUERY_STRING} !(^|&)branchName=
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$
RewriteRule .* <*>?branchName=%1 [L,QSA]