【问题标题】:IIS URL Rewrite - need help rewriting friendly urls for a forumIIS URL Rewrite - 需要帮助为论坛重写友好的 url
【发布时间】:2013-02-06 08:07:21
【问题描述】:

我是使用 URL 重写模块的新手,但我对论坛线程的简单 URL 重写遇到了麻烦(使用 IIS 7.5)

我需要重写:

/forum/100/2534/friendly-title

或:

/forum/100/2534/334/comment/friendly-thread-title

到:

/forum/?forum=100&thread=2534&post=334&postType=comment

我写的规则(不起作用)是:

^forum/([1-9][0-9][0-9]*)/([1-9]*)/(([1-9]*)/(post|comment)/)?([a-zA-Z0-9-]{5,50})$

映射到:

/forum/?forum={R:1}&thread={R:2}&post={R:4}&postType={R:5}

我收到 404 错误。

【问题讨论】:

  • 我测试了正则表达式,它执行了所有值,尽管当我尝试映射第一种类型的友好 URL 时,R:4 和 R:5 为 NULL。

标签: iis iis-7 url-rewriting iis-7.5


【解决方案1】:

使用第一个网址时{R:4}{R:5} 为空是正确的。那是因为这些字段没有值。 RegEx 仍然匹配,因此 URL 仍将被重写。您的代码应该正确处理 postpostType 查询字符串参数的空值,以显示整个线程,而不仅仅是特定的注释(至少我假设会发生这种情况)。

顺便说一下,更合乎逻辑的 URL 结构应该是:

/forum/100/2534/friendly-thread-title/comment/334

虽然这不会帮助你解决这个特殊的问题,但只是附带说明。

【讨论】:

  • 谢谢...我考虑过那个 URL 结构,但我不确定当标题总是在末尾时它是否对 SEO 更友好。你知道吗?你知道是什么导致了我的问题吗?
  • 你知道如何调试吗?我尝试过最简单的重写,^forum/(100)(/?)$ -> /forum/ 当我转到testing.domain.com/forum/100 时得到相同的结果。
  • @Redtopia 你可以使用Failed Request Tracing tool
  • RegEx 和重写规则对我来说看起来不错。您可以从 web.config 发布重写规则吗?也许那里有问题。您是在使用现有的论坛软件还是您自己编写的?
猜你喜欢
  • 2010-12-31
  • 1970-01-01
  • 2012-11-09
  • 2013-10-09
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多