Coldfusion 301 重定向循环(www 和非 www 指向同一个文件)

Coldfusion 301 redirect loop (www and non-www point to the same file)

我到处都搜索过这个,但我能找到的都是与 .htaccess 文件相关的。我的网站所在的服务器未使用 Apache,因此我无法使用 .htaccess 文件。

我试图在人们输入非 www 域时将他们转到我网站的 www 版本。因此,如果用户键入 domain.com,它将把它们发送到 www.domain.com。问题是它们都已经指向同一个 coldfusion 文件。

我有一个有效的重定向设置,但它是一个 302 重定向:

<cfif cgi.server_name eq "mydomain.com">
    <cfset cgi.server_name="www.mydomain.com"/>
</cfif>

如果我将 cfset 更改为:

<cflocation statuscode="301" url="www.mydomain.com"/>

它创建了一个无限重定向循环,我得到了一个错误页面。

我需要使用 301 重定向,这样 Google 就不会对我的页面进行双重索引并说我有重复的内容,因为它将 www 和非 www 视为两个单独的站点,即使它指向同一个文件。此外,301 重定向会将 link 权限从非 www 域转移到 www 域。

要在 CF 中执行此操作,我认为您需要结合您的 2。

<cfif cgi.server_name IS 'mydomain.com'>
     <cflocation statuscode="301" url="www.mydomain.com"/>
</cfif>

仅供参考 - 您的代码对于 cflocaiton 是错误的 - cgi.server_name 不是 cflocation 的属性。

正如其他人所说,您可以使用您的网络服务器执行此操作。 Apache 或 IIS 都可以非常轻松地处理此任务。在 IIS 中,您设置一个站点 mydomain.com 作为您的主机 header,并将其专门设置为重定向站点到 www.mydomain.com。祝你好运!

如果你真的想用 ColdFusion 来做,那么在你的 Application.cfc 文件的 onRequestStart() 方法中试试这个...

<cfif cgi.server_name eq "example.com">
    <cflocation statuscode="301" url="http://www.example.com" addToken="no">
</cfif>

但正如其他人所说,您最好在 Web 服务器层重定向。