URL Redirect в ColdFusion 8, работающем на IIS

У меня есть клиент, который хочет, чтобы псевдоним каталога автоматически перенаправлял на определенный шаблон...

кличка

http://www.host.com/thisplace

Реальный путь

http://www.host.com/somewhere/file.cfm?var=123&anothervar=567

Любые предложения о том, как это сделать?

2 ответа

Есть несколько способов сделать это. Один из способов - установить обработчик 404 как страницу cfm, а затем добавить код на страницу cfm, чтобы выявить имя файла или другие переменные, которые вы ищете. Это работает и даже работает хорошо - но с этим связаны некоторые расходы. Вот ссылка, которая показывает этот подход в IIS:

http://mkruger.cfwebtools.com/index.cfm?mode=entry&entry=8F4658E4-0763-5FB7-67D23B839AB74005

Мы успешно используем этот подход на сайте, который предоставляет HTML 5 "брошюры" для маркетинга. Наш администратор позволяет добавлять различные ключевые слова, а затем example.com/keyword запускает обработчик 404, который ищет ключевое слово и предоставляет нужную брошюру. Таким образом, вы могли бы сделать example.com/eatAtJoes - и брошюра кафе Джо будет подана. Он гибкий и не требует особого ухода и планирования. Ключевые слова просто должны быть уникальными и не могут отражать какие-либо фактические папки в корневом каталоге - вот и все. Но это означает запуск ошибки 404 для каждого потенциального ключевого слова, что не всегда оптимально.

Другим способом было бы использовать URLRewrite - но это может включать добавление чего-либо в ваш шаблон URL, например / go / где-нибудь, - а затем использование / go / для идентификации шаблона и / где-то для определения URL var. Этот подход является наименее затратным (с точки зрения ресурсов веб-сервера), но может потребовать более структурных изменений - т.е. вам придется изменить свои URL-адреса.

Я бы предпочел решение с перезаписью URL, как описывает Март А. Крюгер, но если вы ищете быстрое решение: добавьте следующее в ваш метод onRequestStart в вашем Application.cfc:

<cffunction name="onRequestStart" returnType="boolean" output="true">

    <cfset sRedirects = structNew()/>
    <cfset sRedirects["/thisplace"] = "/somewhere/file.cfm?var=123&anothervar=567"/>
    <cfset sRedirects["/otherplace"] = "/somewhere_else/file.cfm?var=456&anothervar=abc"/>

    <cfif structKeyExists(sRedirects,CGI.PATH_INFO)>
        <cflocation url="#sRedirects[CGI.PATH_INFO]#" statuscode="301"/>
    </cfif>

</cffunction>

Опять же, его быстрое исправление и перезапись URL, безусловно, способ пойти на мой взгляд.

Другие вопросы по тегам