Mod重写此条件

时间:2011-10-22 03:22:04

标签: .htaccess mod-rewrite

我试着改写 www.mysite.com/admin/index.php?page=pagename www.mysite.com/admin/pagename

在我的.htaccess文件(位于www.mysite.com/admin)中有以下几行代码

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]

然而,当我尝试访问

www.mysite.com/admin/mypage?querystring=value 

我必须输入

 www.mysite.com/admin/mypage&querystring=value

代替。首先 ?必须是&因为mod重写而签名。

如何制作能够解决此问题的重写规则。所以我想要

www.mysite.com/admin/mypage/?additional_query=value

重写为

www.mysite.com/admin/index.php?page=mypage&aditional_query=value

我认为谷歌使用#符号或其他东西,或者后来放置/。我该怎么做?

1 个答案:

答案 0 :(得分:2)

Apache已经有了一个简洁的小修饰符,可以添加到RewriteRule的末尾。如果您只是将规则末尾的标记([L])更改为[QSA,L],它会将您的查询字符串附加到网址的末尾,而不是尝试重写包含它的页面(只要查询字符串以?开头,就像预期的那样。

我不确定,但我相信你也需要删除$符号。

换行:

RewriteRule ^([^/\.]+)/? index.php?page=$1 [QSA,L]