Apache mod-rewrite перенаправить имя домена с помощью строки запроса

StackOverflow https://stackoverflow.com/questions/1824944

Вопрос

У нас есть клиент, у которого есть много филиалов по всей Великобритании. Некоторые из их филиалов имеют свои сайты с собственными доменными именами. У клиента есть частично построенная система, где посещение:

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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top