正则表达式 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]
我正在尝试重写这个
网址:
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]