Вопрос по http, .htaccess, https, redirect – http в https через .htaccess

57

Я просматривал существующие вопросы, но на самом деле я не сталкивался с чем-либо, что мне подходит.

В настоящее время я работаю на сайте с сертификатом Secure SSL. Доступ к нему можно получить по адресуhttps://www.example.co.uk проблема в том, что сайт может быть доступен по адресуhttp://www.example.co.uk - Я не хочу, чтобы это было возможно. Мне нужно, чтобы он перенаправил с http на https.

Я нашел этот фрагмент кода для использования в файле .htaccess.

<code>Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.co.uk [NC] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]
</code>

Это прекрасно работает, когда пользователь вводит example.co.uk в свою адресную строку, но мне также нужно добавить условный оператор некоторого вида, чтобы, если пользователь вводит «www.example.co.uk». илиhttp://www.example.co.uk& APOS ;.

Я пытался использовать подобные [ИЛИ], но это приводит к ошибкам на сервере.

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

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

Ваш Ответ

14   ответов
1
# 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]
Нашел решение, удалил перенаправления в файле htaccess и запустил действительно простой плагин ssl
Таким образом, www в URL-адресе не переходит на https-версию. Когда я добавляю предложенный код, я получаю сообщение, которое вы перенаправляете слишком много раз? Любая помощь будет наиболее ценной.
Это делаетnot выглядеть как правильный ответ. Поэтому, пожалуйста, объясните, почему, по вашему мнению, отключение движка перезаписи поможет?
0

кроме этого. Мой сайт был размещен в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]
3

но любой код не работает для моего веб-сайта. Затем я пробую этот код, и этот код идеально подходит для моего веб-сайта. Вы можете использовать следующее правило в 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 своим доменным именем и извините за мой плохой английский.

148

 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.

Спасибо! самый простой способ миграции (с использованием файлов .htaccess) с http: // на https: // (после получения сертификата SSL)
@AlxVallejo SERVER_NAME оставлено как написано, это переменная Mod_Rewrite:askapache.com/htaccess/mod_rewrite-variables-cheatsheet.html
Большое спасибо @BluesRockAddict - Отличный материал. Работал угощение! fitzilla
Для уточнения, вы заполняете SERVER_NAME или оставляете это как написано?
Любая причина, почему кто-то использует[R,L] против другого использования[R=301,L] ?
1

Попробуй это RewriteCond %{HTTP_HOST} !^www. [NC] RewriteRule ^(.*)$ Http: //www.%{HTTP_HOST} / $ 1 [R = 301, L]

Можете ли вы дать МО объяснения по поводу вашего кода, пожалуйста?
1

http://example.com or http://www.example.com to 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]

[Tested]

%{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]
12

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

change example.com with your website domain

Руководство по перенаправлению URL-адресов можно найти здесь -Перенаправить не-www на www & amp; HTTP к HTTPS с использованием файла .htaccess

Это единственный рабочий ответ
Я дубликат REQUEST_URI на 404
Принятый ответ не работает для меня, но этот работает нормально. :)
1

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]
1

дым 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.

1

если вы пытаетесь добавить http для перенаправления https на AWS beanstalk, принятое решение не будет работать. Вам нужен следующий код:

RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
5

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
1

что весь ваш трафик проходитhttps, Например, настроить два виртуальных хоста и перенаправить весь трафик с вашегоhttp на вашhttps хост. Подробнее об этом читайте вэтот ответ здесьsecurity.stackexchange.com.

При настройке виртуального хоста для перенаправления вы можете отправить статус 301 (перенаправление постоянно), чтобы браузер понимал, что все следующие запросы должны отправляться на сервер https, на который он был перенаправлен. Следовательно, никакие дальнейшие запросы http не будут сделаны после первого ответа перенаправления.

Вам также следует внимательно проверить данные ответы, потому что при неправильном задании правил перезаписи вы можете потерять параметры запроса из входящих запросов.

3

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Источник: https://www.ndchost.com/wiki/apache/redirect-http-to-https

(Я пробовал так много разных блоков кода, этот 3 лайнер работал без нареканий)

2

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 (по-русски)

Похожие вопросы