2012-05-28 77 views
0

我正在使用.htaccess將所有請求(除子域之外)從HTTP重定向到HTTPS。此代碼的工作對我來說只是罰款:.htaccess將特定子域從HTTPS重定向回HTTP

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !=m.example.com 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

但是,這並不阻止用戶手動嘗試使用HTTPS(我有不包括子域,並顯示信任錯誤使用時,SSL訪問子域子域)。

現在,我想知道:

1 - 如何我也可以把所有HTTPS請求子域回HTTP?

2 - 如何修改這個代碼,以動態應用子域限制其他子域(不僅m.example.com)

+1

我相信的.htaccess規則的處理之前發生SSL握手(確認這一點),所以你的問題可能只是沒有實際意義。 – Ansari

回答

1

1)如果該證書不包括m.example.com,你永遠不會發送重定向,因爲瀏覽器將拒絕建立連接。所以沒有辦法做到這一點。

2)所以你想要htaccess做的是將裸域重定向到https。要做到這一點:

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^example.com$ 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} 

我證明書上還包括www.example.com使用

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} 
相關問題