2012-08-15 82 views
1

我設置了一個網站上:將不正確的URL重定向到HTTPS站點的方法?

https://foo.com 

,如果從以下網址的流量,我想它:

http://foo.com 
http://www.foo.com 
https://www.foo.com 

將被自動重定向那裏。也就是說,如果有人在瀏覽器中鍵入較低的三個URL之一,我希望它立即將顯示的URL更改爲https://foo.com,並且我希望在服務器上收到https://foo.com上的HTTPS請求,就好像該人輸入了https://foo.com

實現此目的的哪種方法最好?我正在使用Apache。

此外,SSL證書籤署的foo.com而不是www.foo.com,是否有可能實現從https://www.foo.com重定向而不發出證書警告?或者我需要獲得www.foo.com的第二個證書嗎?

+0

來自www.foo.com的重定向必須位於DNS級別才能收到證書錯誤。 CName可能有效,但我不確定。 – xthexder 2012-08-15 19:26:55

+0

那麼你有什麼嘗試? – 2012-08-15 19:27:18

回答

1

所有的非SSL站點在使用vhost文件或.htaccess文件中的重寫(假設您的* .foo.com是foo.com的服務器別名)重定向都沒有問題。

您需要爲每個拼寫錯誤的ssl URL創建一個證書,否則當人們嘗試連接到它們時,他們會收到證書錯誤。一旦完成,您可以重定向它們。

假設服務器別名設置和啓用了mod_rewrite的,這裏是重寫規則,你需要:

RewriteRule (.*) https://foo.com/$1 [R=301,L] 
+0

當你說重寫 - 你的意思是mod_rewrite? – 2012-08-15 19:31:53

+0

@ AndrewTomazos-Fathomling是的,mod_rewrite模塊重寫重寫規則可以放在虛擬主機的httpd.conf文件中,也可以放在docroot .htaccess文件中。 – Ray 2012-08-15 19:34:27

+0

我在這裏閱讀:http://httpd.apache.org/docs/current/mod/mod_rewrite.html – 2012-08-15 19:40:25

0

未經檢驗的,但值得一試
追加這對你的httpd.conf

<VirtualHost *:80> 
     ServerName foo.com 
     ServerAlias www.foo.com 
     DocumentRoot /var/www/foo 
</VirtualHost> 

<VirtualHost *:443> 
     ServerName foo.com 
     DocumentRoot /var/www/foo 
     SSLEngine on 
     SSLCertificateFile /etc/ssl/certs/certificate.crt 
     SSLCertificateKeyFile /etc/ssl/certs/app_foo_com.key 
     SSLCertificateChainFile /etc/ssl/certs/foo.ca.crt 
     ErrorLog /var/log/ssl_engine.log 
</VirtualHost> 
+0

是的,但這不會重定向它們。瀏覽器中顯示的URL仍然不正確。 – 2012-08-15 19:36:05

+0

@ AndrewTomazos-Fathomling你說得對,我的錯誤 – 2012-08-15 19:36:57