.htaccess общий формат перенаправления http на https с ограничением всех поддоменов - PullRequest
0 голосов
/ 11 сентября 2018

Я вижу повсюду десятки руководств о том, как сделать перенаправления с http на https, но лишь немногие из них являются общими с точки зрения доменных имен + НИКОГДА из них не пытается избежать ситуации "подмены поддоменов". Под «поддоменами поддоменов» я подразумеваю, когда кто-то пытается получить доступ к www.fdasfsdafa.example.com на веб-сайте www.example.com. Я ожидаю, что это перенаправит на https://www.example.com. Мне нужен общий пример с кодовыми переменными для доменного имени. Зачем? Потому что у меня есть несколько доменов мультисайтов! Большое спасибо за любую помощь! Я потратил много времени на то, чтобы погуглить, но здесь нет простого примера.

Вот мой текущий код. Он отлично работает, но не обрабатывает переадресацию поддоменов на основной домен https. Субдомены в основном открывают http site = незащищенный сайт.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
</IfModule>

1 Ответ

0 голосов
/ 11 сентября 2018

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

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# subdomains restriction -> https www.domain
RewriteCond %{HTTP_HOST} !^(www\.)?[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTP_HOST} ^.+\.([^.]+\.[^.]+)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R=301]

# http -> https www.domain
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

</IfModule>
...