Перезапись URL http> https AND domain.tld> www.domain.tld - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу переписать и перенаправить мой http:\\www.domain.tld на https:\\www.domain.tld

И я хочу переписать и перенаправить мой domain.tld на www.domain.tld

Я хочу иметь что-то, что перенаправляет, и, с тревогой, показывает, что это перенаправление.

Пока у меня есть что-то вроде этого:

1)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE,QSA]

или

2)

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE,QSA]

Что лучше? Что-то не так?

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

Документы Apache рекомендуют не использовать переписывание: перенаправление на https

Чтобы перенаправить URL-адреса http на https, необходимо выполнить следующие действия:

<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here

Этот фрагмент должен идти в основной файл конфигурации сервера, , а не в .htaccess, как указано в вопросе.

Но если у вас нет доступа к главному файлу конфигурации сервера, вы можете использовать это:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

Строка 1: если URL начинается без www

строка 2: если нет https

строка 3: переписать все URL из этого домена в тот, который начинается с https и имеет www

...