Переписать любой поддомен в https - PullRequest
0 голосов
/ 23 марта 2019

В настоящее время я использую небольшой веб-сервер с Apache в моей системе LAMP.Я уже создал сертификат https для своего домена.Теперь я хотел бы переписать любой субдомен и каталог субдомена в https без www.У меня уже есть код в моем файле .htaccess, и он переписывает версию www в non www и в https.

Вот код в моем файле .htaccess (находится в корневом каталоге apache):

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Я уже пытался просто заменить "www" на "(. *)", Но я не уверен, что делают "% 1" и "$ 1", потому что я нашел этот код в интернете, а они этого не сделалиобъяснил это.Я исследовал регулярные выражения, но ничего не могу найти.

1 Ответ

1 голос
/ 23 марта 2019
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.

example

При использовании # для комментариев убедитесь, что они всегда находятся в новой строке, а не в конце правила, иначе оно не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...