Перенаправить весь трафик c на https: // non-www - PullRequest
0 голосов
/ 30 января 2020

Я пробовал несколько разных настроек перенаправления в .htaccess, чтобы перенаправить весь трафик c на https, отличный от www URL моего сайта, но не могу получить https://www.example.com для перенаправления на https://example.com.

Для ясности я хочу:

    http://example.com
    http://www.example.com
    https://www.example.com

для перенаправления на

    https://example.com

http на https://example.com отлично работает

РЕДАКТИРОВАТЬ:

Я не могу вспомнить различные комбинации, которые я использовал.

Это то, что я установил в данный момент

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 
</IfModule>

Ответы [ 5 ]

0 голосов
/ 29 февраля 2020

Это работает для меня. Попробуйте это

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
0 голосов
/ 09 февраля 2020

У меня были проблемы в домене, где Safari отказывался перенаправлять с http на https, используя

RewriteCond %{HTTPS} off

Теперь у меня есть этот рабочий контент .htaccess:

#  Force https
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# remove www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
0 голосов
/ 30 января 2020

Пожалуйста, попробуйте следующий код и добавьте его к .htaccess

# Canonical HTTPS/non-WWW
<IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
    RewriteRule (.*) https://example.com/$1 [L,R=301]
</IfModule>

Не уверен, что вы пробовали это или нет, но дайте мне знать результат после этого.

0 голосов
/ 30 января 2020

Вы можете использовать это:

RewriteEngine on

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$
RewriteRule (.*) https://%2%{REQUEST_URI} [NE,L,R=301]

Обязательно очистите кеш браузера перед тестированием.

0 голосов
/ 30 января 2020

Попробуйте:

RewriteEngine On

# match any URL with www and rewrite it to https without the www
RewriteCond %{HTTP_HOST} ^(www\.)(.*) [NC]
RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]

# match urls that are non https (without the www)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www\.)(.*) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

С здесь .

...