在 Cherokee 中无需使用单独的虚拟服务器即可将 WWW 重定向到非 WWW

在 Cherokee 中无需使用单独的虚拟服务器即可将 WWW 重定向到非 WWW

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

相关内容