#apache #.htaccess #mod-rewrite
#apache #.htaccess #mod-переписать
Вопрос:
В настоящее время у меня есть mod_rewrite с найденным мной кодом для перенаправления всех запросов на один и тот же URL без www.
Что я пытаюсь сделать сейчас, так это настроить Apache mod_rewrite для выполнения следующего, без каких-либо ненужных действий / дополнительных перенаправлений.
http:// to https://
http://www. to https://
Я не знаком с этим, но в псевдокоде, http(s)://(www.)domain.com
to https://domain.com
исключительно для URL-адресов верхнего уровня, исключая поддомены.
Ответ №1:
Вам просто нужно одно правило для обоих условий:
поместите этот код в свой DOCUMENT_ROOT/.htaccess
файл:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteRule ^ https://domain.com%{REQUEST_URI} [NE,R=301,L]
Комментарии:
1. 1, я замечаю, что для сохранения URL-адреса, который вы
%{REQUEST_URI}
часто используете, сNE
флагом, мне это нравится. 🙂
Ответ №2:
Да, есть способ объединить эти операции в единое правило:
RewriteCond %{HTTP_HOST} !=example.com [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://example.com/$1
Ответ №3:
У меня это сработало. Я попробовал приведенный выше, но он создал цикл перенаправления в старых браузерах.
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]