2017-07-20 41 views
0

我的情況在大多數情況下可以在我的安全站點重定向到https://mysite.example.com,除非用戶輸入https://10.10.10.10,在這種情況下會發生證書錯誤,這是很好的和預期的。但是,如果用戶決定繼續,我想重定向到我的安全網站。這可能嗎。看下面我的代碼。使用SSL的Apache重寫IP

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^10\.10\.10\.10$ 
RewriteRule ^(.*)$ `https://mysite.example.com`/$1 [L,R=301] 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

是的,這是可能的。你的樣品似乎很好 – huydq5000

回答

0

雖然我不知道%{HTTP_HOST}可用於測試IP(阿帕奇可能會考慮有每個沒有主人說,如果主機是IP),並假設你從你的問題測試的規則,它沒沒有工作,肯定有改進的餘地。

您的SSL證書僅與一個主機名關聯(除非您有通配證書,但這將是一個邊緣案例),因此知道您的網站是通過其IP還是其他域訪問並不重要別名;如果您希望將其重定向到https和特定的主機名,那麼所有這一切都很重要。順便說一句,如果你的IP改變了,你將不得不在DNS和你的重寫規則中改變它,這並不理想。

所以,讓我們把它簡化:

RewriteEngine On 
RewriteCond %{HTTPS} !on [OR] 
RewriteCond %{HTTP_HOST} !^mysite.example.com$ 
RewriteRule (.*) https://mysite.example.com%{REQUEST_URI} [L,R=301] 

注意,需要硬編碼在目標mysite.example.com也一樣,如果第二個條件滿足它可能是IP或錯誤的主機。

+0

謝謝膠囊。你的代碼肯定是一個改進。但它仍然不能與[link](https://10.10.10.10)一起使用。我按預期收到證書錯誤,如果我決定繼續,則轉到[link](https://10.10.10.10)(帶有無效證書),而不是[link](https://mysite.example.com) –

+0

您是否清除了瀏覽器緩存?因爲去IP肯定會匹配'RewriteCond%{HTTP_HOST}!^ mysite.example.com $' – Capsule

+0

嘗試了幾臺機器,幾個瀏覽器,https:// 沒有重新定向,當我點擊繼續時。是的,緩存是清除。謝謝您的幫助。 –