我可以在IIS中没有URL重写的“友好”网址吗?

时间:2010-09-09 15:10:49

标签: iis coldfusion seo

如果没有可用的ISAPI_Rewrite等网址重写器,是否可以实现以下目标:

我希望用户浏览到http://www.jjj.com/directory,其中/directory实际上并不存在。 IIS将用户转移到not-found.cfm

此时我可以index.cfm发送http://www.jjj.com/directory/index.cfm

即使目录或index.cfm不存在,网址也会正常显示并加载页面。但是我希望能够在网址中没有index.cfm

理想:

  1. 页面请求http://www.jjj.com/directory

  2. IIS加载not-found.cfm作为默认的404错误处理程序。

  3. 未找到剥离CGI.query_string并使用cfswitches将用户引导至相应的控制器功能。可以使用onMissingTemplate吗?

  4. 网页请求永远不会在网址中发生变化,网页会以200 OK状态透明地加载

  5. 如果用户请求http://www.jjj.com/directory/index.cfm,我会301重定向到http://www.jjj.com/directory

  6. 当前

    1. 页面请求http://www.jjj.com/directory

    2. IIS将not-found.cfm加载为默认的404错误处理程序。

    3. 未找到剥离CGI.query_string并使用cfswitches将用户引导至相应的控制器功能。

    4. 页面请求更改为http://www.jjj.com/directory/index.cfm状态为200 OK

3 个答案:

答案 0 :(得分:3)

你问的是如何削减一些东西,但告诉我们你不允许使用刀子或类似的东西。

这是我使用onMissingTemplate()唯一聪明的主意。

GET /directory/
- > 404.cfm
- &GT; <cfinclude template="#cgi.script_name#/special.cfm" />
- &GT;触发onMissingTemplate(),忽略“special.cfm”位,只需使用所请求路径的其余部分来确定要连接的控制器。

这是一个kludgy hack,所以我会尽量避免它。也许如果您解释为什么 ISAPI重写不是一个选项,那么我们可能会进一步提供帮助。

答案 1 :(得分:1)

您可以告诉IIS有404和403错误在您的网站上执行自定义网址(例如/urlhandler.cfm)。

然后,您可以使用cfinclude解析'cgi.query_string'并路由应用程序,只需包含正确的'template.cfm',或者,您可以重新格式化您的框架所期望的输入,或者使用项目如http://coldcourse.riaforge.org/

只需注意一下,IIS会为您提供如下所示的网址:'404; http://yoursite.com/the/url/you/wanted/to/route'。

答案 2 :(得分:1)

IIS7是否在批准的软件列表中?这可以让你重新编写原生网址并将整个问题放在一边。

第二个选项 - 我的CFM voodoo生锈了,但我认为你可以设置IIS6来寻找CFM页面(就像你正在做的那样)但是然后在应用程序级别进行操作并在它实际上进行url重写/重新创建点击404页面。

另一种方法 - 找一个ISAPI网址重写器,比如说,根据MIT许可证。建立自己的副本。然后让它们作为软件包的一部分安装。