我有一个清晰的基于URL的系统,所以类别将显示如下
http://www.mysite.com/category/23/cat-name
在类别页面中,我有一些排序和页面选项,例如按晚期排序和降低价格。另外,我有一个页面导航系统
问题是当请求发生在页面内时$_GET[]
没有显示我需要的变量。但是它在URL中显示为
http://www.mysite.com/category/23/cat-name?page=3
$_GET
变量仅显示我们现在为23
的类别的ID,并忽略了网址中的网页编号。
.htaccess
内容
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1
答案 0 :(得分:2)
您需要在规则末尾添加QSA标记。这会将任何现有查询字符串附加到您在规则本身中构建的字符串:
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
因此,重写的URI最终应为:/cat.php?id=23&page=3
答案 1 :(得分:2)
在重写规则的末尾添加QSA(查询字符串追加)。
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致组合查询字符串。
使用[QSA]标志,/ pages / 123?one = 2的请求将映射到/page.php?page=123&one=two。如果没有[QSA]标志,相同的请求将映射到/page.php?page=123-也就是说,现有的查询字符串将被丢弃。