我试着改写 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
我认为谷歌使用#符号或其他东西,或者后来放置/。我该怎么做?
答案 0 :(得分:2)
Apache已经有了一个简洁的小修饰符,可以添加到RewriteRule的末尾。如果您只是将规则末尾的标记([L]
)更改为[QSA,L]
,它会将您的查询字符串附加到网址的末尾,而不是尝试重写包含它的页面(只要查询字符串以?
开头,就像预期的那样。
我不确定,但我相信你也需要删除$
符号。
换行:
RewriteRule ^([^/\.]+)/? index.php?page=$1 [QSA,L]