1

在过去的几个小时里,我试图在 IIS 中创建一个符合我要求的重写规则,但我就是不明白。所以也许有人可以帮助我:-)

到目前为止,我所拥有的是以下内容:

重写网址

index.php?page={R:1}&param={R:2}

正则表达式模式

^(.*)/([0-9]+)

这就是我想在最后写我的网址的方式:

在这个例子中,我应该在“?page”中有“news/detail”,在“?param”中有“1”。

到目前为止,我创建的规则似乎工作得很好,只要我最后有一个数字(参数)。

我唯一的问题是我想让数字(参数)可选。

非常感谢您的支持。

4

2 回答 2

0

为了允许最后的比赛捕获是可选的,放一个?通过它。还可以通过使用结束字符 $ 将其锚定来指定它将位于。

^(.*)/?(\d+)?$

我也做了最后的 / 可选的,因为如果没有数字,你不希望匹配失败,如果它最后没有 / (这应该是可选的)。

于 2013-08-15T14:35:12.957 回答
0

我想不出比这更宽容的东西:

^([a-z-/]+)([0-9])?

根据您的评论Paths never have a number in it,我走得更远,只允许从ato字符z(如果需要,使用忽略大小写选项)。
此规则将匹配以下任何 url:

  • news/detail/1/=> {R:1}=news/detail/{R:2}=1
  • news/detail/1=> {R:1}=news/detail/{R:2}=1
  • news/detail/=> {R:1}=news/detail/并且{R:2}是空的
  • news/detail=> {R:1}=news/detail并且{R:2}是空的

您可能必须处理/代码中的尾随。

限制来自这样一个事实,据我所知,重写规则中的正则表达式不支持负前瞻/后瞻模式。

于 2013-08-16T17:00:48.813 回答