0

すべての URL が特定のページの www バージョンにリダイレクトされるように、301 リダイレクトを実現しようとしています。ページ構造は、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_name がファイル名を含むパスを返すことを除いて、これは非常に近いです。ディレクトリだけを取得する方法はありますか? /foo1/foo2/ のように、ディレクトリがネストされている場合があることに注意してください。

ありがとう。

4

4 に答える 4

2

「domain.com」に向かうすべてのトラフィックを「www.domain.com」にリダイレクトすることを意図している場合は、Web サーバー レベルで行う方がよい場合があります。Web サーバーは、CF ファイルだけでなく、画像、css および js ファイルなどの静的リソースも処理します。

于 2011-03-21T14:19:41.570 に答える
1

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>
于 2011-03-21T13:04:44.097 に答える
0

これを試して

<cfset strUrl = listDeleteAt(cgi.SCRIPT_NAME,listLen(cgi.SCRIPT_NAME,'/'),'/') />

于 2011-03-21T06:05:59.217 に答える
0

Or try this

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

to have the trailing slash as well.

于 2011-03-21T11:46:12.867 に答える