Apache Htaccess规则在我的网站上不起作用

Apache Htaccess规则在我的网站上不起作用,apache,.htaccess,Apache,.htaccess,我从stackoverflow上的其他答案复制了此代码,我想缩短一个长url: 比如说 到 这是我目前的代码: Rewriteengine on RewriteCond %{THE_REQUEST} ^.*/mobile/user.php\?uname=(.*).*$ RewriteRule . /mobile/%1 [R,L] RewriteRule ^(.+)$ /mobile/user.php?uname=$1 [R,L] 它在浏览器中显示有线url http://examp

我从stackoverflow上的其他答案复制了此代码,我想缩短一个长url:

比如说

这是我目前的代码:

Rewriteengine on 
RewriteCond %{THE_REQUEST} ^.*/mobile/user.php\?uname=(.*).*$ 
RewriteRule . /mobile/%1 [R,L] 
RewriteRule ^(.+)$ /mobile/user.php?uname=$1 [R,L]
它在浏览器中显示有线url

 http://example.com/mobile/fooHTTP 1.1 

有人知道为什么会发生这种情况吗?

您的正则表达式在第一条规则中是错误的:

RewriteEngine on

RewriteCond %{THE_REQUEST} /mobile/user\.php\?uname=([^\s&]+) [NC]
RewriteRule . /mobile/%1? [R,L]

RewriteRule ^(.+)$ /mobile/user.php?uname=$1 [R,L]
试试这个

 Rewriteengine on 
 RewriteCond %{THE_REQUEST} ^.*/mobile/user.php\?uname=(.*?).*$ 
 RewriteRule . /mobile/%1 [R,L] 
 RewriteRule ^(.+?)$ /mobile/user.php?uname=$1 [R,L]
这是因为星号(*)是 在正则表达式中,因此它会消耗尽可能多的资源。只要在星星后面加一个,这种行为就可以改变

(.*?)