Как мне создать правило 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 и т. Д. Стали бы доступными.