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

Можно изменить хост в заголовках

Каждый раз, когда кто-то посещает intern.old-company-name.example.com Я бы хотел, чтобы его перенаправили на https://intern.new-company-name.example.com. Один из способов сделать это -

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*) https://intern.new-company-name.example.com$1
#    RewriteRule ^(.*) https://%{HTTP_HOST}$1                                                             
</IfModule>

но мне не нравится, что я жестко кодирую внешний поддомен intern в httpd.conf.

Вопрос

Можно ли сделать регулярное выражение на %{HTTP_HOST} так old-company-name заменяется на new-company-name до перенаправления на https? А может, что-то подобное?

Обновить

# apachectl -S
VirtualHost configuration:
10.10.10.10:443     is a NameVirtualHost
         default server a.y.b.com (/etc/httpd/conf.d/ssl.conf:85)
         port 443 namevhost a.y.b.com (/etc/httpd/conf.d/ssl.conf:85)
Syntax OK

Пусть поведение HTTP в HTTPS обрабатывается прослушивателем HTTP, а поведение старого имени для нового имени обрабатывается прослушивателем HTTPS. (Мы могли бы сделать так, чтобы перенаправление HTTP также изменяло имя, но при этом все будет в одном месте и будет проще.)

Итак, в ваш основной файл конфигурации мы вернем исходную конфигурацию с небольшой настройкой:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://${HTTP_HOST}$1

Затем внутри <VirtualHost> в /etc/httpd/conf.d/ssl.conf сделаем перенаправление имени:

RewriteCond %{HTTP_HOST} ^([^\.]+)\.old-company-name\.example\.com$
RewriteRule ^(.*)$ https://%1.new-company-name.example.com$1 [R,L]

Изменить заголовки можно с помощью mod_headers - проверьте http://httpd.apache.org/docs/2.2/mod/mod_headers.html за весь синтаксис и детали. Я не могу сказать наверняка, что вы можете добиться того, чего хотите - и я не совсем уверен, почему вы хотите изменить заголовок в этом случае.