Я пытаюсь настроить перенаправление SSL в Apache с помощью RewriteEngine, который будет делать следующее:

  • Перенаправляйте трафик на http://mydomain.com или http://www.mydomain.com для использования HTTPS
  • Перенаправить трафик на любой другой поддомен https: //*.mydomain.com для использования HTTP вместо HTTPS

Я объясняю это тем, что я разрабатываю проект, в котором до запуска используется бесплатный сертификат SSL. Этот сертификат распространяется на базовый домен, но не на поддомены с подстановочными знаками, и мне сложно обходить предупреждение каждый раз, когда я посещаю один из поддоменов.

Изменить: я считаю, что я здесь, но я все еще не могу заставить перенаправление HTTPS на HTTP работать должным образом.

RewriteEngine on
# Redirect domain and www to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} =mydomain.com [or]
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect wildcard subdomains to HTTP
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3
aaronhuisinga 4 Фев 2014 в 22:35

1 ответ

Лучший ответ

Догадаться. Перенеся эти правила из файла sites-available / default в .htaccess внутри корня веб-сайта, я смог заставить это работать правильно.

RewriteEngine on
# Redirect domain and www to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} =mydomain.com [or]
RewriteCond %{HTTP_HOST} =www.mydomain.com
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect wildcard subdomains to HTTP
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !=www.mydomain.com
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
4
aaronhuisinga 5 Фев 2014 в 00:30
Спасибо за эти правила, которые помогли мне получить перенаправление для домена с подстановочными знаками. Вы добавили перенаправление HTTPS-> HTTP в часть SSL конфигурации виртуального хоста apache? Может быть, почему это не сработало без того, чтобы он был в .htaccess. Более производительно, если можно, поместить его в конфигурацию apache.
 – 
Brian Hogg
23 Мар 2015 в 18:55