Есть ли лучший способ перенаправить мои различные http на https и не-www на www для нескольких доменов? - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть файл .htaccess, который отвечает за несколько доменов.Для всех этих доменов у меня есть решение перенаправить все http на https и удалить / добавить поддомен www, где это необходимо.Хотя это некрасиво.Есть ли лучший способ?

Я ограничен этим файлом .htaccess.Мне также важно, чтобы только 1 перенаправление на запрос.

Вот мое уродливое решение:

RewriteEngine On

# domain A (redirects to https without a subdomain)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^.+\.domainA\.com$ [NC]
RewriteRule .* https://domainA.com%{REQUEST_URI} [R=302,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^.+\.domainA\.com$ [NC]
RewriteRule .* https://domainA.com%{REQUEST_URI} [R=302,L]

# domain B (redirects to https & to www subdomain)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?!(www\.)).*(domainB\.com)$ [NC]
RewriteRule .* https://www.domainB.co.uk%{REQUEST_URI} [R=302,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(?!(www\.)).*(domainB\.com)$ [NC]
RewriteRule .* https://www.domainB.co.uk%{REQUEST_URI} [R=302,L]

# domain C (redirects to https & to www subdomain)
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?!(www\.)).*(domainC\.com)$ [NC]
RewriteRule .* https://www.domainC.co.uk%{REQUEST_URI} [R=302,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(?!(www\.)).*(domainC\.com)$ [NC]
RewriteRule .* https://www.domainC.co.uk%{REQUEST_URI} [R=302,L]

# ..N domains

каждый раздел 1-й обрабатывает перенаправление субдомена для http трафика,Затем обрабатывает переадресацию поддоменов для трафика https .

Большое дублирование, которое вы заметите, - это условие проверки, включен ли http.Для одного домена я бы уменьшил его и имел бы оператор [ИЛИ]:

# domain B
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^(?!(www\.)).*(domainB\.com)$ [NC]
RewriteRule .* https://www.domainB.co.uk%{REQUEST_URI} [R=302,L]

Но я не могу сделать это с несколькими доменами, потому что первый RewriteCond будет совпадать на любом домене, где отключен https.

Итак, можно ли украсить что-нибудь из этого?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...