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

Перенаправление конфигурации Apache с использованием только перенаправления, а не перезаписи

PS: это вторая часть вопроса, изначально размещенного Вот.

Я бы хотел отключить Заголовок HSTS полностью для конкретных виртуальных хостов. У меня есть (на рекомендация) перенаправление в контейнере 443 для каждого из этих хостов. Работает нормально, но Apache не рекомендует используя RewriteRule без крайней необходимости. Можно ли выполнить перенаправление ниже, используя только Перенаправитьа не переписать?

<VirtualHost x.x.x.x:443>
<IfModule mod_headers.c>
Header unset Strict-Transport-Security
Header always set Strict-Transport-Security "max-age=0;includeSubDomains"
</IfModule>
SuexecUserGroup "#520" "#520"
ServerName dev.domain.com
ServerAlias www.dev.domain.com
ServerAlias subdomainjr2b.dev.domain.com
ServerAlias www.subdomainjr2b.dev.domain.com
ServerAlias subdomainblah.dev.domain.com
ServerAlias www.subdomainblah.dev.domain.com
RewriteEngine On
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [redirect=302]

PS1: Domain.com имеет сертификат с подстановочными знаками, а подстановочные знаки работают только для sub.domain.com, но не для sub.sub.domain.com, поэтому необходимо отключить hsts для этих vhosts.

PS2: Не спрашивайте меня, зачем мне использовать Header unset когда я уже использую Header always set. Он отправлял клиенту два заголовка раньше Header unset был реализован, и насколько я понял это не должно.

Причина использования Redirect вместо того mod_rewrite в том, что последнее требует гораздо больше ресурсов, чем первое, и причина этого в том, что последний может делать гораздо больше. Одна из вещей, которые mod_rewrite могу сделать и RedirectMatch не может - отслеживать имя хоста, используемое в запросе.

Итак, проблема здесь в том, что вы хотите продолжать использовать одно и то же доменное имя после перенаправления, и вы хотите, чтобы все домены были псевдонимами на одном виртуальном хосте. Пока вы хотите и то, и другое, тогда mod_rewrite это единственный инструмент.

Если бы вы могли либо перенаправить все запросы на одно каноническое имя хоста, либо разделить их на одно VirtualHost на доменное имя можно было бы использовать RedirectMatch вместо этого вот так:

RedirectMatch ^(.*)$ https://dev.domain.com$1