0

我到处都在搜索这个,但我能找到的都与 .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 重定向会将链接权限从非 www 转移到 www 域。

4

2 回答 2

2

要在 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 作为主机标头的站点,并将其专门设置为指向 www.mydomain.com 的重定向站点。祝你好运!

于 2015-01-07T16:14:24.907 回答
1

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

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

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

于 2015-01-07T16:24:04.593 回答