现在,显示以下网址:
www.mysite.com/account.php?username=$username
我想要的是:
www.mysite.com/$username
我在htaccess
文件中使用以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /account.php?username=$1 [L,QSA]
但它不起作用:URL与以前相同。
怎么了?
答案 0 :(得分:1)
你的规则只做这个:
如果有人请求www.mysite.com/$username
,则在/account.php?username=$username
内部为资源提供服务。
这就是全部。语法为RewriteRule <the URI that matches this> <gets internally rewritten to this>
因此,您对更改网址没有任何帮助。这不是mod_rewrite的工作原理。你想要的是能够从外部重定向浏览器,以便位置栏中的内容发生变化。要做到这一点,它要复杂得多:
RewriteCond %{THE_REQUEST} \ /account\.php\?username=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R=301]