我正在努力使用mod_rewrite。目前我有这个网址:
http://localhost/products.php?page=3&sort=r90&range=25-50
页面,排序和范围参数不是必需的。我喜欢的是以下工作网址:
第1页:
http://localhost/products
- > http://localhost/products.php
第3页:
http://localhost/products/3/
- > http://localhost/products.php?page=3
对于带有n个参数的第5页:
http://localhost/products/5/?sort=r90&range=25-50
- > http://localhost/products.php?page=5&sort=r90&range=25-50
我目前有这条规则:
^products/([0-9]+)$ http://localhost/products.php?page=$1
正确适用于:
http://localhost/products/3/
和http://localhost/products/
然而,当我添加参数时,例如http://localhost/products/2/?sort=r90&range=25-50
重定向到http://localhost/products.php?sort=r90&range=25-50
(没有页面参数)
有什么想法吗?
答案 0 :(得分:1)
使用QSA标志。将您当前的规则修改为:
RewriteRule ^products/([0-9]+)/?$ /products.php?page=$1 [NC,QSA,L]
来自Apache's docs on mod-rewrite:
修改查询字符串
默认情况下,查询字符串不会更改。您可以, 但是,在包含查询的替换字符串中创建URL 字符串部分。只需在替换字符串中使用问号 表示应将以下文本重新注入 请求参数。如果要删除现有查询字符串,请结束 替换字符串只有一个问号。结合新旧 查询字符串,使用
[QSA]
标志。