【问题标题】:Method to redirect incorrect URLs to HTTPS site?将不正确的 URL 重定向到 HTTPS 站点的方法?
【发布时间】:2012-08-12 03:11:35
【问题描述】:

我已经建立了一个网站:

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 获得第二个证书?

【问题讨论】:

  • 来自 www.foo.com 的重定向必须在 DNS 级别,以免收到证书错误。 CName 可能有效,但我不确定。

标签: html apache http https


【解决方案1】:

在您的 vhost 文件或 .htaccess 文件中使用重写来重定向所有非 SSL 站点都没有问题(假设您有 *.foo.com 是 foo.com 的服务器别名)。

您需要为每个拼写错误的 ssl url 提供证书,否则当人们尝试连接它们时,它们会出现证书错误。完成后,您可以重定向它们。

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

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

【讨论】:

  • 当你说重写 - 你的意思是 mod_rewrite 吗?
  • @AndrewTomazos-Fathomling 是的,mod_rewrite 模块重写重写规则可以放在虚拟主机的 httpd.conf 文件或 docroot .htaccess 文件中。
  • @AndrewTomazos-Fathomling 完全正确。您是否有能力查看您的服务器是否已启用此模块?这很常见。
【解决方案2】:

未经测试但值得一试
将此附加到您的 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>

【讨论】:

  • 是的,但这不会重定向它们。浏览器中显示的 URL 仍然是错误的。
猜你喜欢
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多