Перенаправление на HTTPS с .htaccess с определенным доменом
В настоящее время у меня есть 2 домена, которые имеют доступ к одной и той же папке на моем сервере: metrikstudios.com и ziced.com.
Я хочу, чтобы пользователи, которые вошли через http://metrikstudios.com, были перенаправлены на https://metrikstudios.com и пользователи, которые вошли через http://ziced.com не перенаправляются на https://ziced.com.
В настоящее время у меня это на моем .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Спасибо
Ответы
Ответ 1
Вы можете просто добавить еще один RewriteCond, чтобы проверить, является ли хост metrikstudios.com
RewriteCond %{HTTP_HOST} ^metrikstudios\.com [NC]
и он должен выглядеть следующим образом:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^metrikstudios\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Ответ 2
Принятое решение выше перенаправляет только домен non-www
от http
до https
.
Если вы хотите перенаправить обе версии www
и non-www
вашего домена на ssl
, поместите следующий RewriteCond
прямо над вашим http в https правило или перед RewriteCond %{HTTPS} off
:
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
Вот полное правило для перенаправления определенного домена на https.
RewriteEngine on
# first we will check the host header
#if it wwwexample.com or example.com
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
# now we will check the https header
# if https is off (Is non-ssl)
RewriteCond %{HTTPS} off
#redirect the requeste to https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
Ответ 3
Учетные записи Linux и cPanel для Linux используют
.htaccess
для обработки перенаправления.
Примечание. Если вам нужно создать файл .htaccess, вы можете использовать свой диспетчер файлов панели управления (Web и Classic/cPanel).
Использование следующего кода в вашем файле .htaccess автоматически перенаправляет посетителей на HTTPS-версию вашего сайта:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
If you have an existing .htaccess file:
Не дублируйте RewriteEngine On.
Убедитесь, что строки, начинающиеся с RewriteCond и RewriteRule, немедленно следуют за уже существующим RewriteEngine On.
Windows и Plesk
Учетные записи Windows используют файлы web.config для перенаправления.
Примечание. Если вам нужно создать файл web.config, вы можете использовать файловый менеджер вашей панели управления (Web и Classic/Plesk).
Использование следующего кода в файле web.config автоматически перенаправляет посетителей на HTTPS-версию вашего сайта:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Если у вас есть существующий файл web.config:
Убедитесь, что у вас есть разделы (т.е. открывающие и закрывающие теги) для:
system.webServer(который содержит переписывание)
переписать (который содержит правила)
правила (который содержит одну или несколько разделов правил)
Вставьте любой из тех разделов, которые не существуют.
Вставьте раздел правил, включая совпадение, условия и действие, внутри раздела правил.
Примечание. Вы вставляете правило (без 's') внутри раздела правил (с 's').
Ответ 4
Иногда вы можете перенаправить только на живой сервер и оставить для него локальные настройки как есть. Например, если на локальном компьютере вы зарегистрировали локальный хост с именем www.mysite.loc
и настроили локальный экземпляр проекта на этом хосте.
В этом случае это тоже может помочь:
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} !.loc$ [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
где !.loc$
- правило игнорировать перенаправление на https, если хост заканчивается на .loc
.