IIRF重写IIS7的规则

时间:2010-01-21 19:52:51

标签: iis-7 iirf

我正在使用IIRF v2.1进行重写规则

我写这样的规则,但它不起作用

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/?$ $1.php?iid=$2 [QSA,L]

如果我使用follwoing url

http://localhost/prod/22/new-item

我需要的实际网址是什么 http://localhost/prod.php?iid=22

是的工作版是

RewriteRule / ^(prod | pag | staf)/([A-Za-z0-9 - ] +)/?$ /$1.php?iid=$2 [QSA,L] 但这里的问题是所有样式和包含文件都不包括在内。

由于

3 个答案:

答案 0 :(得分:1)

你的正则表达式不允许新项目遵循最后的斜杠。

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/?$ $1.php?iid=$2 [QSA,L]

结束模式的/?$序列说...斜线(可能)然后是字符串的结尾。但是,您的网址不会以斜杠结尾。它以斜杠和文本“new-item”结尾。

捕获 的正则表达式将是这样的:

RewriteRule ^(prod|pag|staf)/([A-Za-z0-9-]+)/? $1.php?iid=$2 [QSA,L]

...其中说,您不关心可选斜杠后面的内容,并且因为您使用的是QSA,原始URL中的任何查询字符串都会附加到外发URL。

但这基本上会丢弃传入URL请求的“新项目”部分,我不确定您要这样做。

答案 1 :(得分:1)

只需写这样的网址

RewriteRule ^ /(prod | pag | staf)/([A-Za-z0-9 - ] +)/?$ /$1.php?iid=$2 [QSA,L]

并在你的样式表和其他包括

之前/之前

如果您的旧样式表包含这样的

   style/style.css

chnage it to

  /style/style.css

图像和链接相同。 希望这会很好。

答案 2 :(得分:0)

如果你的网址总是包含数字然后是slug,这个正则表达式将获得每个部分:

^(prod|pag|staf)/([0-9]+)/([A-Za-z0-9-]+)/?