如何将访问者从https://domain.netredirect到https://www.domain.net ? 使用Alogging或其他DNS设置?
我问,因为我犯了一个错误,购买www.domain.net的SSL证书…
感谢您的任何想法!
configuration您的服务器发出一个HTTP 301响应映射到另一个,例如使用Redirect与Apache。
您需要设置您的networking服务器来发送redirect到浏览器。 这是我如何在Apache中做到这一点。
将两个DNSlogging指向相同的IP地址(例如,使用CNAME别名),并将下面的代码放在侦听此地址的虚拟主机中。 你还需要启用mod_rewrite。
# Do an external redirect: # Places www in front of the domain, but only if there's no www or other subdomain yet. RewriteEngine On RewriteCond %{HTTP_HOST} !^.*\..*\..*$ [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]
正如Andrushka和Martijn Heemels所说,你需要configuration一个Web服务器来将客户redirect到www。 地址。 但是由于这是我们正在谈论的https,所以比这更复杂。 当浏览器客户端打开到服务器的SSL连接时,它认为它是www.domain.net,它希望服务器在发送HTTP请求之前使用对该域有效的证书作出响应(并因此获得响应中的redirect)。 如果你的服务器只有domain.net的证书,你会得到一个证书警告。 有几种方法可以解决这个问题:
1-与它同住,并configuration服务器将客户端redirect到正确的域(获得证书警告之后)。 对于安全性来说不是很好,因为你正在训练你的用户信任任何假冒为你的冒充者网站。
2-不要打扰redirect,只是在www.domain.net和domain.net下提供相同的内容。 你的用户会得到同样的警告,所以没有太多的redirect(除非你想要一些其他的原因,如URL一致性)。
3-获得对www.domain.com和domain.com有效的双域证书(一个作为证书的主题,另一个作为主题备选名称扩展名),并将其与前两种方法中的任意一种一起使用。 我没有尝试过,但是我认为StartSSL的免费证书包含了这个function。
4-为domain.net获取单独的证书,然后运行另一台服务器(或另一个IP地址上的虚拟服务器)来处理redirect。 它必须位于不同的IP地址,以便在看到客户端的HTTP请求之前知道使用哪个证书。
5-为domain.net获取一个单独的证书,使用足够新的服务器软件在同一IP地址上运行第二台虚拟服务器,以支持SSL / TLS(例如Apache 2.2.12或更高版本)的Server Name Indication扩展,并希望客户端的浏览器也是新的(一些会,一些不会)。
DNS服务器不能执行HTTPredirect。 您应该使用Web服务器来执行301redirect。 像Apache / lighttpd这样的所有现代服务器都支持HTTPredirect。 您也可以使用http://redirect.200please.com等第三方工具
请记住, 切勿使用CNAME redirect
为什么不直接与SSL卖方谈话并要求重命名您购买的SSL证书?
如果您不习惯使用Web服务器的configuration文件,许多脚本语言也可以发出HTTPredirect。 这是一个PHP示例:
if ($_SERVER['HTTPS']!="on") { header('Location: https://yoursite.com/'.$_SERVER["REQUEST_URI"]); exit; }