Перенаправление на HTTP-не-www на HTTPS www htaccess
Я хочу перенаправить с любого направления на наш сайт с протоколом HTTPS, но некоторые перенаправляют его, но не работают. Я хочу это:
-
http://www.site.co
TO https://www.site.co
-
http://site.co
TO https://www.site.co
Это мой htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Второе правило не работает. Это происходит в другом направлении внутри нашего сайта, и оно не перенаправляется на сайт HTTPS.
Ответы
Ответ 1
Попробуйте это так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
Единственная реальная разница здесь в том, что сначала мы перенаправляем с не-WWW на WWW, затем мы проверяем HTTPS и перенаправляем его.
Если это не работает, попробуйте это:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
Ответ 2
Ответ на Prix работает. Чтобы сделать его более динамичным, вы можете использовать SERVER_NAME и REQUEST_URI вместо статического имени домена.
RewriteEngine On
#we replace domain.com/$1 with %{SERVER_NAME}%{REQUEST_URI}.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
#here we dont use www as non www was already redirected to www.
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
Ответ 3
Извините, у меня недостаточно комментариев, но правило @prix приведет к ненужной перенаправлению.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Вы можете попробовать http://domain.com/ в GTMETRIX, и вы получите это сообщение
"Avoid landing page redirects for the following chain of redirected URLs."
http://domain.com/
http://www.domain.com/
https://www.domain.com/
Чтобы этого избежать, перейдите к первому RewriteRule и добавьте "s" в конец http. Новый набор правил будет выглядеть так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Ответ 4
Это перенаправление с http на https и не с www на www с использованием .htaccess
Если вы хотите перенаправить на https и www, вы можете использовать этот код
перенаправление http на https:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>
Перенаправление не с www на www:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Если вы хотите использовать функциональность стенда, разместите вышеупомянутый код соответственно
Ответ 5
Если вы используете One.com в качестве своего веб-хостинга, вы должны использовать следующий код:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ответ 6
попробуйте ниже, работает нормально
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com$1 [R,L]
Ответ 7
У меня есть веб-сайт asp.net, и хост-провайдер не поддерживает модуль перезаписи IIS. Я протестировал все эти методы, и только этот код дает подтверждение woorank.com, которое может оказаться полезным для другого разработчика .net:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
Ответ 8
Это будет использоваться как для www, так и для не-www
Если вы попытаетесь открыть ссылку с www, то перенаправите URL-адрес на https с помощью www
Example : http://domain.com redirect to https://domain.com
или Если вы попытаетесь открыть ссылку с не-www, тогда перенаправите URL-адрес на https с помощью не-www
Example : http://www.domain.com redirect to https://www.domain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Ответ 9
Просто поместите в файл .htaccess
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Ответ 10
Я использую это:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [END,NE,R=permanent]
Ответ 11
Попробуйте этот метод:
# Redirect 301 all to https://www
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteRule (.*) https://www.example.com/$1 [L,R=301]
</IfModule>
Почему иногда вам не нужен код % {HTTP_HOST} и используйте точный URL вашего домена с www для последней строки, потому что обычно результат будет иметь два типа www:
https://www.www.yourdomain.com
Кстати, если вы используете cloudflare, просто создайте pagerules, перенаправьте 301 all на https и www версию.
Создайте страницы
Заполните
example.com/*
Выберите настройку URL-адреса переадресации, затем выберите 301 и заполните его
https://www.example.com/$1
Сохраните его, и все будут перенаправлены на https и www версию.
Ответ 12
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
Ответ 13
Например https://example.com должно быть https://www.example.com
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
Примечание. Вы должны изменить example.com на свой собственный домен.