2013-02-21 81 views
0

我是新来使用URL重写模块,我有麻烦与我认为将是一个简单的URL重写为论坛主题(使用IIS 7.5)IIS网址重写 - 需要帮助重写友好的网址为一个论坛

我需要重写:

/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错误。

+0

我测试了正则表达式并且它完成了所有的值,但是当我尝试映射第一种类型的友好URL时,R:4和R:5是NULL。 – Redtopia 2013-02-21 04:58:31

回答

1

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

顺便说一句,一个更合乎逻辑的URL结构将是:

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

这不会帮助你这个这个特定的问题,但只是在一个方面说明。

+0

谢谢......我想到了这个URL结构,但我不确定当标题总是在最后时它更适合搜索引擎优化。你知道吗?你知道什么可能会导致我的问题? – Redtopia 2013-02-21 15:57:55

+0

你有任何想法如何调试?我试过做最简单的重写,^ forum /(100)(/?)$ - >/forum /,当我访问http://testing.domain.com/forum/100时,我得到了相同的结果。 – Redtopia 2013-02-21 16:28:11

+1

@Redtopia你可以使用[失败请求追踪工具](http://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules) – cheesemacfly 2013-02-21 16:30:22