2010-01-21 109 views
1

我使用IIRF 2.1的重写规则IIRF重写规则的IIS7

我写的规则是这样,但它不工作

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

如果我使用follwoing网址

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

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

yes working version is

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

感谢

+0

您是否有其他规则可行?试图缩小与规则或IIRF配置有关的范围。 – 2010-01-21 19:56:45

+0

对于投票结束的人来说,这是编程相关的,因为它确实是一个正则表达式问题。 – 2010-01-21 20:01:35

+0

我认为这可能更适合于serverfault。 – Cheeso 2010-01-21 20:09:58

回答

1

只写URL这样

重写规则^ /(PROD | PAG | STAF)/(A-ZA-Z0-9 - ] +)/ $ /$1.php?iid=$2 [QSA? ,L]

并将/前样式表和其他包括

如果旧的样式表是包括这样

style/style.css 

chnage它到

/style/style.css 

相同的图像和链接。 希望这会工作正常。

0

如果你的网址将始终包含数字,则塞,此正则表达式将得到各部分:

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

你的正则表达式不允许新的项目遵循最后的斜线。在结束图案说

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

在/?$序列......一个斜杠(也许),然后将字符串的结尾。但是,您的网址并非以斜线结尾。它以斜线和文本“新项目”结尾。

捕获会是这样的一个正则表达式:

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

...它说,你不在乎可选斜线后会发生什么,因为你正在使用QSA ,那么原始URL中的任何查询字符串都会附加到传出网址。

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