1

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

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

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

如果我使用以下网址

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

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

是的工作版本是

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

谢谢

4

3 回答 3

1

您的正则表达式不允许 new-item 跟随最后的斜线。

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

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

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

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

...也就是说,您不关心可选斜杠之后的内容,并且因为您使用的是 QSA,所以原始 URL 中的任何查询字符串都将附加到传出 URL。

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

于 2010-01-21T20:09:18.130 回答
1

像这样写网址

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

并将 / 放在您的样式表和其他包含之前

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

   style/style.css

将其更改为

  /style/style.css

图片和链接也一样。希望这会正常工作。

于 2010-01-21T20:24:16.963 回答
0

如果您的 URL 将始终包含数字然后是 slug,则此正则表达式将获取每个部分:

^(prod|pag|staf)/([0-9]+)/([A-Za-z0-9-]+)/?
于 2010-01-21T20:02:10.243 回答