Назад | Перейти на главную страницу

Как мне создать правило mod_rewrite, которое использует имя поддомена для перезаписи URL?

Как мне создать правило mod_rewrite, которое использует имя поддомена для перезаписи URL?

Я хочу сделать что-то вроде этого:

Пересылать запросы ОТ http://agency1.company.com Кому: https://appname.company.com/appname/login.jsp?agencyName=agency1

Это не обязательно должен быть активный прокси; Это может быть просто мета-обновление или простой URL-адрес. Похоже, это обычный сценарий, но я не могу найти пример в Интернете. Много примеров перезаписи URI в сети, но не так много примеров полной перезаписи URL (как я пытался сделать выше).

Для этого вы можете использовать RewriteCond для значения HTTP_HOST. Есть пара примеров такого использования в Руководство по переписыванию URL-адресов Apache. Вы бы сделали что-то вроде этого:

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

Это не проверено и может не работать как есть, но должно указать вам правильное направление.

Для этого вы можете использовать обратные ссылки.

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

Однако обратите внимание, что это приведет к повторному перенаправлению после выполнения 301, ЕСЛИ перенаправление должно произойти по HTTP, используйте только следующий блок.

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 относится к первому «захвату» регулярного выражения в строке RewriteCond, если бы вы использовали несколько точек,% 2 и т. Д. Стали бы доступными.