RewriteEngine On
RewriteBase /
# domain starts with www (change yourdomain to your domain name)
# adding the domain name will ensure its not trying to capture a subdomain with www
# For example: ^www\.(.*)$ will redirect www.subdomain.domain.com to https.
RewriteCond %{HTTP_HOST} ^www\.(yourdomain) [NC]
# then redirect to HTTPS
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
# check if HTTPS is not being used
RewriteCond %{HTTPS} off
# and because we already redirect www. we exclude it
RewriteCond %{HTTP_HOST} !^www\. [NC]
# and now we test to see if its a subdomain (change yourdomain to your domain name)
RewriteCond %{HTTP_HOST} ^[^\.]+\.yourdomain [NC]
# now we finally redirect it
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
Как только вы подтвердите, что перенаправление поддоменов работает, вы измените R=302
на R=301
, причина этого в том, чтобы ваш браузер не кэшировал перенаправление, пока вы не сможете обеспечить его работу.
Если вы допустили ошибку при использовании R=301
, перенаправление будет сохранено в кэше, и результаты могут быть ненадежными при просмотре, пока он не очистится или вы не используете другой браузер.
%1
используется, когда вы захватываете что-то с RewriteCond
, тогда как $1
захватывается с RewriteRule
.
Число представляет индекс захваченного значения, если у вас есть что-либо, приводящее к множественным значениям, как вы можете видеть ниже с $1
и $2
.
При использовании #
для комментариев убедитесь, что они всегда находятся в новой строке, а не в конце правила, иначе оно не будет работать.