Iis 7 ColdFusion中没有文件名的URL重定向?

Iis 7 ColdFusion中没有文件名的URL重定向?,iis-7,coldfusion,coldfusion-9,Iis 7,Coldfusion,Coldfusion 9,我正在尝试实现301重定向,以便将我的所有URL重定向到给定页面的www版本。我们的页面结构是:url.com/home/default.cfm。我正在尝试将ColdFusion中的URL重写到当前目录,而不使用文件名 我使用的代码如下: <cfif (CGI.SERVER_NAME NEQ "www.url.com")> <!-- Save the URL (and $_GET variables too) as the string 'strUrl' --> <

我正在尝试实现301重定向,以便将我的所有URL重定向到给定页面的www版本。我们的页面结构是:url.com/home/default.cfm。我正在尝试将ColdFusion中的URL重写到当前目录,而不使用文件名

我使用的代码如下:

<cfif (CGI.SERVER_NAME NEQ "www.url.com")>
<!-- Save the URL (and $_GET variables too) as the string 'strUrl' -->
<!-- <cfset strUrl = CGI.script_name & "?" & CGI.query_string />-->
<cfset strUrl = CGI.script_name />
<!-- Use 301 for SEO-friendly redirects -->
<cfheader statuscode="301" statustext="Moved permanently">
<!-- Redirect to new website (this case, added www.) with strUrl added on -->
<cfheader name="Location" value="http://www.url.com#strUrl#">
</cfif>

这非常接近,除了CGI.script\u name返回带有文件名的路径。你知道怎么拿到目录吗?请记住,我们可能有嵌套的目录,例如/foo1/foo2/

谢谢。

试试这个

试试这个

或者试试这个

<cfset strUrl = Replace(cgi.SCRIPT_NAME, ListLast(cgi.SCRIPT_NAME,'/'), '')>

也可以使用尾随斜杠。

或者试试这个

<cfset strUrl = Replace(cgi.SCRIPT_NAME, ListLast(cgi.SCRIPT_NAME,'/'), '')>


也可以使用尾随斜杠。

您可以使用getDirectoryFromPath()来执行此操作,这也将保留尾随斜杠

<cfset strUrl = getDirectoryFromPath(cgi.SCRIPT_NAME)>

此外,还可以通过使用cflocation标记并指定statusCode属性来简化代码

<cfif (CGI.SERVER_NAME NEQ "www.url.com")>
<!-- Save the URL (and $_GET variables too) as the string 'strUrl' -->
<!-- <cfset strUrl = CGI.script_name & "?" & CGI.query_string />-->
<cfset strUrl = getDirectoryFromPath(CGI.script_name) />
<!-- Use 301 for SEO-friendly redirects -->
<cflocation url="http://www.url.com#strUrl#" statusCode="301">
</cfif>

您可以使用getDirectoryFromPath()执行此操作,这也将保留尾部斜杠

<cfset strUrl = getDirectoryFromPath(cgi.SCRIPT_NAME)>

此外,还可以通过使用cflocation标记并指定statusCode属性来简化代码

<cfif (CGI.SERVER_NAME NEQ "www.url.com")>
<!-- Save the URL (and $_GET variables too) as the string 'strUrl' -->
<!-- <cfset strUrl = CGI.script_name & "?" & CGI.query_string />-->
<cfset strUrl = getDirectoryFromPath(CGI.script_name) />
<!-- Use 301 for SEO-friendly redirects -->
<cflocation url="http://www.url.com#strUrl#" statusCode="301">
</cfif>


如果您的目的是将所有前往“domain.com”的流量重定向到“www.domain.com”,那么您最好在Web服务器级别这样做。Web服务器不仅会处理CF文件,还会处理静态资源,如图像、css和js文件等。

如果您打算将所有流向“domain.com”的流量重定向到“www.domain.com”,您最好在Web服务器级别执行此操作。Web服务器不仅要处理CF文件,还要处理静态资源,如图像、css和js文件等。

+1非CF资源会发生什么情况?如果可以的话,让Web服务器处理这些事情。是的,这是我的首选,但不幸的是,我们的技术设置不允许这样做-我们在一家大型公司,这使我们的服务器级访问变得复杂。此外,我们这样做的主要原因是为了防止在Google中重复索引页面(这是一个问题,以前我们会对非WWW和WWW版本进行索引)。如果您特别考虑在Google索引中这样做,您可以查看Google针对站长的“首选域”说明。请参阅[link]+1非CF资源会发生什么情况?如果可以的话,让Web服务器处理这些事情。是的,这是我的首选,但不幸的是,我们的技术设置不允许这样做-我们在一家大型公司,这使我们的服务器级访问变得复杂。此外,我们这样做的主要原因是为了防止在Google中重复索引页面(这是一个问题,以前我们会对非WWW和WWW版本进行索引)。如果您特别考虑在Google索引中这样做,您可以查看Google针对站长的“首选域”说明。见[链接]