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 ответов:
попробуйте следующее:
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]