Невозможно перенаправить на https (htaccess)

Я пытался настроить свой файл htaccess, который будет перенаправлять с http на https со следующими строками инструкции. Но не могло.

Примечание: я также не хочу, чтобы www перед URL-адресом сайта.

В чем может быть возможная ошибка моего кода. Кто-нибудь, пожалуйста, предложите.

 RewriteEngine on
 RewriteCond %{HTTPS} off
 RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
 RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
53
3

Ответы 3

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

 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.

Проблема заключается в этой строке:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

Эта строка заставляет это правило работать только для домена со стартовым www.

Вам необходимо сделать запуск www необязательным, используя:

RewriteEngine on

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

В качестве другого решения, если у вас есть только одно доменное имя (www.)example.com, вы можете использовать более читаемое:

RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]

Другие вопросы по теме