Перенаправление URL без имени файла в ColdFusion? - PullRequest
0 голосов
/ 21 марта 2011

Я пытаюсь добиться перенаправления 301 таким образом, чтобы все мои URL были перенаправлены на www-версию данной страницы. Структура нашей страницы: url.com/home/default.cfm. Я пытаюсь переписать URL-адреса в ColdFusion в текущий каталог без имени файла.

код, который я использую, это:

<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 ]

2 голосов
/ 21 марта 2011

Если вы намереваетесь перенаправить весь трафик, идущий на «domain.com» на «www.domain.com», возможно, вам лучше сделать это на уровне веб-сервера. Веб-сервер позаботится не только о файлах CF, но и о статических ресурсах, таких как изображения, файлы css & js и т. Д.

1 голос
/ 21 марта 2011

Вы можете использовать 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>
0 голосов
/ 21 марта 2011

Или попробуйте это

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

чтобы иметь косую черту.

0 голосов
/ 21 марта 2011

Попробуйте это

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

...