Mod_rewrite 和 $_GET 变量
Posted
技术标签:
【中文标题】Mod_rewrite 和 $_GET 变量【英文标题】:Mod_rewrite and $_GET variables 【发布时间】:2010-12-02 16:58:54 【问题描述】:如果我从以下位置修改 URL:
http://www.mysite.com/blog/this-is-my-title/1/
到
http://www.mysite.com/blog.php?title=this-is-my-title&id=1
...以后是否有可能在 URL 上任意附加一个 get 值,或者 mod_rewrite 是否会将其丢弃?
我的重写规则:
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
我认为这应该可行,但由于某种原因,目前不适合我。
【问题讨论】:
不看你的 RewriteRule 就无法回答这个问题。 【参考方案1】:可以使用 QSA(查询字符串附加)标志附加它。
RewriteEngine on
RewriteRule from-url to-url [L,NC,QSA]
【讨论】:
【参考方案2】:您可以将 QSA 添加到 RewriteRule
标志:
RewriteRule page_([0-9]+)\.html page.php?id=$1 [QSA]
将page_1.html?a=2
重定向到page.php?id=1&a=2
但是,请小心,因为请求 page_1.html?id=2
将重定向到 page.php?id=1&id=2
,并且(在 PHP 中)$_GET['id']
将是 2。
【讨论】:
这里是 QSA 文档的链接:httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa以上是关于Mod_rewrite 和 $_GET 变量的主要内容,如果未能解决你的问题,请参考以下文章
mod_rewrite 删除 .php 扩展名并保留 GET 参数