Как предотвратить выполнение правила перезаписи только для одного поддомена?


В корневом уровне .htaccess я добавил условие для перезаписи HTTP-запросов как HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Это относится к основному домену и всем поддоменам. К сожалению, в одном из поддоменов еще предстоит поработать, чтобы он работал с HTTPS, поэтому я хотел бы вставить что-нибудь в , что в файл .htaccess, чтобы отменить унаследованные правила перезаписи.

Файл все равно должен наследовать множество других конфигураций от родительского домена, поэтому он должен отменить только одно правило перезаписи.

Как я могу отключить это правило перезаписи для определенного поддомена?

Author: Stephen Ostermiller, 2017-09-20

1 answers

Если поддомен указывает на подкаталог вне корневого каталога документов основного домена, то вы можете просто включить директиву RewriteEngine On в файл .htaccess этого подкаталога. Однако это переопределит все директивы mod_rewrite в родительском файле .htaccess, что может быть нежелательно (хотя "другая конфигурация из родительского домена" будет унаследована).

Если у вас есть другие директивы mod_rewrite в родительском .htaccess, которые вы хотите запустить, вам нужно будет добавьте условие к этому правилу HTTP/HTTPS в родительский файл .htaccess, которое специально исключает поддомен.

Например:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^subdomain\.
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

В котором говорится... если хост не не запускает subdomain. и не https, то...

Обычно вам требуется флаг L для перенаправления, чтобы обработка не продолжалась через файл (если у вас больше директив mod_rewrite). Кроме того, этот магазин обычно должен быть 301 (постоянным) перенаправлением. Если это так, то затем измените 302 на 301, когда вы убедитесь, что он работает нормально. Хотя, возможно, лучше оставить как 302, пока это разрабатывается.

Кроме того, нет необходимости фиксировать URL-путь (т.Е. (.*)), если это не используется в RewriteRule замена (или директивы RewriteCond).

 2
Author: MrWhite, 2017-09-20 18:39:41