将错误的网址重定向到HTTPS网站的方法?

时间:2012-08-15 19:24:41

标签: html apache http 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的第二个证书?

2 个答案:

答案 0 :(得分:1)

所有非SSL站点都可以在vhost文件或.htaccess文件中使用重写进行重定向(假设你有* .foo.com是foo.com的服务器别名)。

您需要为每个拼写错误的ssl网址提供证书,否则当人们尝试连接到这些网址时,他们会收到证书错误。完成后,您可以重定向它们。

假设设置了服务器别名并且启用了mod_rewrite,这里是您需要的重写规则:

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

答案 1 :(得分: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>