![在 Cherokee 中无需使用单独的虚拟服务器即可将 WWW 重定向到非 WWW](https://linux22.com/image/554179/%E5%9C%A8%20Cherokee%20%E4%B8%AD%E6%97%A0%E9%9C%80%E4%BD%BF%E7%94%A8%E5%8D%95%E7%8B%AC%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%B3%E5%8F%AF%E5%B0%86%20WWW%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E9%9D%9E%20WWW.png)
我正在使用 Cherokee 网络服务器,并且希望将所有对 www.domain.com 的请求重定向到 domain.com,而无需创建单独的虚拟服务器来重定向请求。
在本Host Match
节中,我已将 www.domain.com 和 domain.com 设置为通配符模式下的接受域。现在我假设我需要使用Redirection
以下设置使用处理程序创建规则:
Type: External
Regular Expression: ^/(.*)$
Substitution: http://domain.com/$1
问题是,我该选择哪种类型的规则?我尝试了以下设置的重定向规则:^www.domain.com/(.*)$
编辑:答案
(因为 ServerFault 还不允许我回答这个问题)
终于搞定了。创建Header
类型的规则并选择Host
标题。然后匹配此正则表达式: 。使用正则表达式:和替换:将^www.domain.com$
处理程序设置为外部重定向。^/(.*)$
http://domain.com/$1
执行一次优雅重启,您就一切就绪了!
答案1
终于搞定了。创建Header
类型的规则并选择Host
标题。然后匹配此正则表达式: 。使用正则表达式:和替换:将^www.domain.com$
处理程序设置为外部重定向。^/(.*)$
http://domain.com/$1
执行一次优雅重启,您就一切就绪了!
答案2
我正在寻找其他东西,但注意到其他搜索者可以使用一些建议。
除非您想要实际更改浏览器中的地址栏(即从“www.domain.tld”更改为“domain.tld”)并浪费带宽并花费更多时间来加载,您应该让 cherokee 继续根据您可以为任何主机(例如“www”)配置的“匹配”设置提供服务,您尚未在域名服务(DNS)中将其设置为裸域(domain.tld)的 CNAME 资源记录(RR)。
显然,使用 DNS 将任何主机重定向到裸域 [即,创建 DNS RR:'host-name IN CNAME domain.tld'。请注意'.tld' 后面的“。”(点)],从各方面来看,成本都要低得多。即使您处于使用其他人的名称服务器的受限共享托管环境中,他们也始终可以为您的 DNS 设置“CNAME”RR。
所以,这就给我们带来了一个问题:为什么要使用任何主机。您可以通过将所有链接转到 domain.tld 而不是 host-name.domain.tld 来消除歧义。
如果您担心搜索引擎优化 (SEO):请不要担心。搜索引擎“机器人”从“domain.tld”和 DNS 开始。此外,当服务器提供重定向时,它们并不认为这是一件“好”事。因此,修剪您的链接并在 DNS 中做正确的事情,您会好得多!