参数的mod重写规则

时间:2012-09-02 06:37:53

标签: mod-rewrite

我有以下网址

www.localhost.com/profile.php?username=first.last

我想将上面的网址永久重定向到使用.htaac​​cess文件。 (apache服务器)

www.localhost.com/first.last

还请考虑其他网址很少,但我不想触摸它们。比如

www.localhost.com/message.php?id=12
www.localhost.com/editprofile.php?editname=first.last
www.localhost.com/uploadphoto.php?username=first.last

任何人都可以帮助我。 提前谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用RewriteCond处理查询字符串,并将捕获的匹配项传递给RewriteRule。您必须排除重写规则的任何.php脚本,否则会导致其他网址出现问题。

不要忘记在RewriteRule之后添加[QSA]标记,否则它将不会添加查询字符串参数。

也许做这样的事情:

RewriteEngine on

#serve any existing php scripts as usual
RewriteRule ^([a-zA-Z0-9]+\.php) - [L]

#and now handle your specific stuff:
RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+\./[a-zA-Z0-9]+)$
RewriteRule ^(%1)$ /profile.php?username=%1 [QSA]

我不测试它,但它应该是一个良好的开端。您可以在here的文档中阅读有关如何编写和处理特定重写用例的一些好东西mod_rewrite httpd 2.2