http до https через.htaccess


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

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

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

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

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

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

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

Ура.

12 53

12 ответов:

попробуйте следующее:

 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.

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

изменить example.com с вашего сайта

URLs перенаправление учебник можно найти здесь -перенаправление не-www на www и HTTP на HTTPS с помощью .htaccess file

попробуйте это, я использовал его и он работает нормально

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

попробуйте это:

RewriteEngine On

RewriteCond %{HTTPS} off

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

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

(Я пробовал так много разных блоков кода, этот 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/ [R,L]

//Redirect non-www to www
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/ [L,R=301]

</IfModule>

изменить example.com с вашим доменным именем и извините за мой плохой английский.

для перенаправления 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]

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

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

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

Если вы хотите перенаправить 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}/ [R=301,L] 

Он сначала перенаправит HTTP на HTTPS, а затем перенаправит на www.

для меня работает только этот вариант:

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

# 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/ [L,R=301]

поскольку это один из лучших результатов в поиске, если вы пытаетесь добавить HTTP в https redirect на AWS beanstalk, принятое решение не будет работать. Вместо этого вам нужен следующий код:

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

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