的mod_rewrite和$ _GET变量

问题描述:

如果我从一个mod_rewriting网址:

http://www.mysite.com/blog/this-is-my-title/1/

http://www.mysite.com/blog.php?title=this-is-my-title&id=1

...它可能然后随意上附加一个GET值后来的URL,还是mod_rewrite抛出它?

MY重写规则:

RewriteRule ^blog/([A-Za-z]+)/(0-9]+)/? blog?title=$1&id=$2  [L] 

例:

我可以去 http://www.mysite.com/blog/this-is-my-title/1/?first=Johnnie&last=Wiggles

这将从根本上意味着

http://www.mysite.com/blog.php?title=this-is-my-title&id=1&first=Johnnie&last=Wiggles

我认为守ld工作,但由于某种原因,目前它不适合我。

+1

如果不查看您的RewriteRule,则无法回答此问题。 – 2009-09-30 15:48:41

+0

它现在被添加...道歉 – johnnietheblack 2009-09-30 15:51:34

您可以添加QSA到RewriteRule标志:

RewriteRule page_([0-9]+)\.html page.php?id=$1 [QSA] 

将重定向page_1.html?a=2page.php?id=1&a=2

但是,要小心,因为请求page_1.html?id=2会重定向到page.php?id=1&id=2,以及(在PHP) $_GET['id']将是2.

+0

不要忘记标记URL路径的开始和结束。 – Gumbo 2009-09-30 16:53:01

+0

以下是QSA文档的链接:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa – inorganik 2013-08-20 02:49:17

可以使用QSA(查询字符串附加)标志来追加它。

RewriteEngine on 
RewriteRule {from-url} {to-url} [L,NC,QSA]