.htaccess RewriteRule 保留 GET URL 参数
Posted
技术标签:
【中文标题】.htaccess RewriteRule 保留 GET URL 参数【英文标题】:.htaccess RewriteRule to preserve GET URL parameters 【发布时间】:2011-05-03 12:54:58 【问题描述】:在 htaccess url 重写后保持 url 的参数正常工作时遇到问题。
我的htaccess改写如下:
RewriteEngine on
RewriteRule ^([a-z]2,2)/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2
这意味着:
domain.com/index.php?lang=en&page=product
显示为domain.com/en/product
由于某种原因,当我在 URL 的末尾添加 ?model=AB123&color=something
时,我无法使用 $_GET['model']
和 $_GET['color']
在 php 中检索这些参数,即使它们存在于显示的 URL 中。
为什么不传递变量?
【问题讨论】:
【参考方案1】:您需要附加 [QSA](查询字符串附加)标签。试试
RewriteEngine on
RewriteRule ^([a-z]2,2)/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [QSA]
见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
【讨论】:
非常感谢。那行得通。有趣的是,在我尝试了一些事情之后,解决方案是多么简单...... 它似乎对我不起作用,即使带有 QSA 标签。显示正确的页面,但由于 $_GET 似乎无法获得,它会引发大量错误。我正在使用RewriteRule ^details/([^/])/?$ details?Pin=$1 [QSA]
你先生是个传奇:)以上是关于.htaccess RewriteRule 保留 GET URL 参数的主要内容,如果未能解决你的问题,请参考以下文章
在 .htaccess 重定向中保留 HTTP/HTTPS 协议
.htaccess:将根URL重定向到子目录,但保留根URL
将多个 RewriteRule 指令组合成 .htaccess 中的单个规则