Http до https через .htaccess
Я просмотрел существующие вопросы, но на самом деле я не сталкивался с тем, что работает для меня.
В настоящее время я запускаю сайт с сертификатом Secure SSL. Доступ к нему можно получить по адресу https://www.example.co.uk. Проблема заключается в том, что сайт также можно получить по адресу http://www.example.co.uk - Я не хочу, чтобы это было возможно. Мне нужно перенаправить его с http на https.
Я нашел этот фрагмент кода для использования в файле .htaccess.
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.co.uk [NC]
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]
Это отлично работает, когда пользователь вводит example.co.uk в свою адресную строку, но мне также нужно добавить условный оператор какого-то рода, чтобы, если пользователь вводит "www.example.co.uk" или "http://www.example.co.uk '.
Я попытался использовать подобные [OR], но это приводит к созданию ошибок сервера.
Любая помощь и предложения приветствуются.
Приветствия.
Ответы
Ответ 1
Попробуйте следующее:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Кроме того, вы также можете перенаправить на основе номера порта, например:
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Это перенаправит все запросы, полученные на порт 80, на HTTPS.
Ответ 2
Добавьте следующий код в файл .htaccess.
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
изменить example.com с доменом вашего сайта
URL-адрес перенаправления учебника можно найти здесь Перенаправить не-www на www и HTTP в HTTPS с использованием файла .htaccess
Ответ 3
Попробуйте, я использовал его, и он отлично работает
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ответ 4
Попробуйте следующее:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Источник:
https://www.ndchost.com/wiki/apache/redirect-http-to-https
(я пробовал так много разных блоков кода, этот 3 лайнер работал безупречно)
Ответ 5
Я пытаюсь использовать весь код выше, но любой код не работает на моем сайте. Затем я пробую этот код, и этот код работает идеально для моего сайта. Вы можете использовать следующее правило в htaccess:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
//Redirect http to https
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
//Redirect non-www to www
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
</IfModule>
Измените example.com своим доменным именем и извините за мой плохой английский.
Ответ 6
У меня работают ТОЛЬКО этот вариант:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Спасибо https://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-dobavit-redirekt/redirekt-s-http-na-https (на русском языке)
Ответ 7
Чтобы перенаправить http://example.com
или http://www.example.com
в https://www.example.com
простым способом, вы можете использовать следующее правило в htaccess:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
[Испытано]
% {REQUEST_SCHEME} доступна с apache 2.4, эта переменная содержит значение запрошенной схемы (http или https), на apache 2.4 вы можете использовать следующее правило:
RewriteEngine on
RewriteCond %{REQUEST_SCHEME} ^http$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
Ответ 8
Есть более безопасные способы убедиться, что весь ваш трафик проходит https
. Например, настройте два виртуальных хоста и перенаправляйте весь трафик с вашего http
на ваш хост https
. Подробнее об этом читайте в здесь на security.stackexchange.com.
При настройке виртуального хоста для перенаправления вы можете отправить статус 301 (перенаправить навсегда), чтобы браузер понял, что все последующие запросы должны быть отправлены на сервер https, на который он был перенаправлен. Следовательно, после первого ответа перенаправления дальнейшие HTTP-запросы не будут сделаны.
Вы также должны тщательно проверить данные ответы, потому что с неправильными правилами перезаписи вы можете потерять параметры запроса из ваших входящих запросов.
Ответ 9
Если вы хотите перенаправить HTTP на HTTPS и хотите добавить www с каждым URL-адресом, используйте htaccess ниже
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
сначала перенаправляет HTTP на HTTPS, а затем перенаправляется на www.
Ответ 10
# Switch rewrite engine off in case this was installed under HostPay.
RewriteEngine Off
SetEnv DEFAULT_PHP_VERSION 7
DirectoryIndex index.cgi index.php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# RewriteCond %{HTTP_HOST} ^compasscommunity.co.uk\.com$ [NC]
# RewriteRule ^(.*)$ https://www.compasscommunity.co.uk/$1 [L,R=301]
Ответ 11
Поскольку это один из лучших результатов поиска, если вы пытаетесь добавить http к перенаправлению https на AWS beanstalk, принятое решение не будет работать. Вам нужен следующий код:
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
Ответ 12
Попробуйте это RewriteCond %{HTTP_HOST} !^www. [NC] RewriteRule ^(.*)$ http://www.% {HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www. [NC] RewriteRule ^(.*)$ http://www.% {HTTP_HOST}/$1 [R=301,L]
Ответ 13
Идеальный код Переход к индексу HTML:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.html" [R=301,L]
Или же
Идеальный код Переход к индексу PHP:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.php" [R=301,L]
Ответ 14
Ничто из этого не сработало для меня, кроме этого. Мой сайт был размещен в https://www.asmallorange.com
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]