在htaccess重定向后获取查询字符串项

时间:2013-12-10 13:44:14

标签: .htaccess mod-rewrite

我有一个重写的网址,它看起来像下列之一:

http://www.example.com/anyfolder/some-more-here/
http://www.example.com/anyfolder/some-more-here/?ref=referralcode

以下是我玩的规则:

RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/?$ /page.asp?folder=$1&url=$2&refcode=$3 [NC,L]

我的问题是,因为(http://www.example.com/anyfolder/some-more-here/?ref=)是一个重写的URL,在重写完成后其上有一个额外的查询字符串项,我如何在我的代码中获得该“ref”项?通过做一个简单的请求,我可以很容易地得到“anyfolder”和“some-more-here”,但我对“ref”值部分感到困惑。我认为可能需要QSA标志,只是无法将它们整合在一起。

我在这个网站上使用Classic ASP,但解决方案可能也适用于PHP。

任何帮助都会很棒。提前谢谢你!

丹尼斯

1 个答案:

答案 0 :(得分:2)

好的,根据你的评论你需要QSA标志。请尝试以下规则:

RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/?$ /page.asp?folder=$1&url=$2&refcode=$3 [NC,L,QSA]

这将在重写的URI中保留?ref=...

  • QSA(查询字符串追加)标记在添加新查询参数时保留现有查询参数。