我从stackoverflow上的其他答案复制了这段代码,我想缩短一个长网址:
例如
http://example.com/mobile/user.php?uname=foo
到
这是我目前的代码:
Rewriteengine on
RewriteCond %{THE_REQUEST} ^.*/mobile/user.php\?uname=(.*).*$
RewriteRule . /mobile/%1 [R,L]
RewriteRule ^(.+)$ /mobile/user.php?uname=$1 [R,L]
它在浏览器中显示有线网址
http://example.com/mobile/fooHTTP 1.1
有谁知道为什么会这样?
答案 0 :(得分:0)
试试这个
Rewriteengine on
RewriteCond %{THE_REQUEST} ^.*/mobile/user.php\?uname=(.*?).*$
RewriteRule . /mobile/%1 [R,L]
RewriteRule ^(.+?)$ /mobile/user.php?uname=$1 [R,L]
这种情况正在发生,因为Star(*)是 的 greedy 强> 在Regex中它尽可能消耗。只需在星号后面添加?即可更改此行为。
(.*?)