Перенаправление на 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 на свой собственный домен.