正则表达式 url 重写不适用于带空格的参数

Regex url rewriting not working for arguments with spaces

我正在尝试重写这个 网址:
npc.php?id=3141&name=a+cool+guy 至 /npcview-3141-a-cool-guy.html

使用以下规则

RewriteRule npcview-(.*)-(.*)\.html$ npc?npcid=&name=

它适用于没有空格的参数,例如

npcview-341-man.html 

服务器输出符合预期:

Array ( [npcid] => 341[name] => Man) 

但是如果我用空格做一些事情,例如

npcview-881-a-cool-guy.html

我明白了

 Array ( [npcid] => 8834-a-cool [name] => guy.html ) 

我做错了什么?

问题是在您的正则表达式中使用了 .*。试试这条规则:

RewriteRule npcview-([^-]+)-(.+?)\.html$ npc?npcid=&name= [L,QSA]