我正在使用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] 但这里的问题是所有样式和包含文件都不包括在内。
由于
答案 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-]+)/?