2016-10-16 3 views
0

У меня есть сайт, который содержит субдомены, я установил SSL-сертификат и хочу, чтобы HTTP-запросы были перенаправлены на HTTPS, однако я не хочу, чтобы субдомены были перенаправлены на HTTPS кроме пары: app.example.com и api.example.com которые должны быть HTTPS.Переадресация с HTTP на HTTPS, но не для поддоменов

У меня настроен код ниже, однако он не обрабатывает субдомены, мои поддомены в настоящее время перенаправляются на HTTPS-версию корневого домена.

NameVirtualHost *:80 
<VirtualHost *:80> 
    ServerName example.io 
    ServerAlias *.example.io 
    Redirect permanent/https://example.io/ 
</VirtualHost> 

<VirtualHost _default_:443> 
... 

Как это сделать?

Редактировать: Быть более конкретным. Как я могу ...?

Спасибо.

ответ

1

Это можно легко сделать с помощью mod_rewrite.

RewriteCond %{HTTPS} =off 
RewriteCond %{HTTP_HOST} "^(((app|api)\.)?example\.com)$" 
RewriteRule ^/(.*)$ https://%1/$1 [R,L] 

Первое условие гарантирует, что правило запускается только для запросов, отличных от HTTPS. Это можно опустить, если вы поместите правило в свой порт 80 vhost и принимаете только запросы, отличные от HTTPS, на этом порту.

Второе условие проверяет заголовок HOST, чтобы убедиться, что это example.com, app.example.com или api.example.com.

Само правило вызывает перенаправление к аналогу HTTPS. % 1 является обратной ссылкой на полное содержимое заголовка HOST (% 0 также может работать здесь и позволяет вам опустить некоторые парсеры), а $ 1 - это обратная ссылка на путь (минус ведущая косая черта).

ПРИМЕЧАНИЕ. Возможно, вы можете использовать if directive, а также ограничить перенаправление по своему усмотрению.

+0

Все было, место сверху. – human

Смежные вопросы