.htaccess перенаправляет http на https только для некоторых доменов дополнений.

У меня есть несколько доменов аддонов в моей учетной записи хостинга. Я хотел бы перенаправить не-https в https для основного домена и ТОЛЬКО ОДИН из дополнительных доменов.

Проблема, с которой я сталкиваюсь, заключается в том, что www.firstaddondomain.com не перенаправляет на https://www.firstaddondomain.com/. Вместо этого это, кажется, не перенаправляет вообще. Он остается на www.firstaddondomain.com.

Примечание: я не хочу перенаправлять все http на https. У меня есть другой домен аддона, который я не хочу перенаправлять на https.

Вот как выглядит мой файл.htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?maindomain\.com$ [NC]
RewriteRule ^$ https://www.maindomain.com/$1 [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?firstaddondomain\.com$ [NC]
RewriteRule ^$ https://www.firstaddondomain.com/$1 [R,L]

ОБНОВЛЕНИЕ: Спасибо за ваш ответ, анубхава. Мой первый аддон-домен на самом деле является доменом.org, поэтому мой обновленный файл.htaccess немного отличается от вашего ответа.

Вот мой обновленный файл.htaccess

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?firstaddondomain\.org$ [NC]
RewriteRule ^ https://www.firstaddondomain.org%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?maindomain\.com$ [NC]
RewriteRule ^ https://www.maindomain.com%{REQUEST_URI} [R=302,L,NE]

2 ответа

Решение
  • Ваше регулярное выражение не захватывает $1
  • Оба правила могут быть объединены в одно

Ты можешь использовать:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(maindomain|firstaddondomain)\.com$ [NC]
RewriteRule ^ https://www.%1.com%{REQUEST_URI} [R=302,L,NE]

Убедитесь, что это ваше первое правило и помещено в DocumentRoot/.htaccess обоих доменов.

Может варьироваться в зависимости от условий вашего хостинга, однако в средах общего хостинга Godaddy и без SSL-сертификата Wildcard, т. Е. SSL-сертификата для одного домена. Это единственная конфигурация, которой удалось исключить дополнительный домен из принудительного перенаправления HTTPS:

RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(www\.)?ADDON_DOMAIN\.com$ [NC] RewriteRule .* - [L]
# Это необходимо для того, чтобы гарантировать, что никакие дополнительные условия не будут применены после перехода к домену дополнения. #
RewriteCond %{HTTPS} off
# Теперь, когда вы определили свое исключение и убедились, что его логика не зависит от всех других запросов URI, необходимо повторно установить это условие еще раз #
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Другие вопросы по тегам