Подтвердить что ты не робот

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], но это приводит к созданию ошибок сервера.

Любая помощь и предложения приветствуются.

Приветствия.

4b9b3361

Ответ 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.

Ответ 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 своим доменным именем и извините за мой плохой английский.

Ответ 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]