我正在使用 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 中做正确的事情,您会好得多!