2016-10-16 53 views
0

我有一個包含子域的站點,我已經安裝了一個SSL證書,並且我希望HTTP請求被重定向到HTTPS,但是我不希望子域被重定向到HTTPS除了一對:app.example.comapi.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虛擬主機並僅接受該端口上的非HTTPS請求,則可以省略此項。

第二個條件檢查HOST頭以確保它是example.com,app.example.com或api.example.com。

該規則本身發出重定向到HTTPS對應。 %1是對完整HOST頭內容的反向引用(%0也可以在這裏工作,並允許你省略一些parens),$ 1是對路徑的反向引用(減去前導斜槓)。

注意:您也可以使用if directive以根據需要限制重定向。

+0

就是這樣,發現。 – human

相關問題