Php 使用干净的URL处理$\u GET请求
我有一个明确的基于URL的系统,所以类别将显示如下Php 使用干净的URL处理$\u GET请求,php,.htaccess,clean-urls,Php,.htaccess,Clean Urls,我有一个明确的基于URL的系统,所以类别将显示如下 http://www.mysite.com/category/23/cat-name 在分类页面中,我有一些排序和页面选项,如按最新者排序和较低的价格。还有,我有一个网页导航系统 问题是,当请求发生在页面内部时,$\u GET[]不会显示我需要的变量。但是,它在URL中显示为 http://www.mysite.com/category/23/cat-name?page=3 $\u GET变量只显示类别的id,在我们的例子中,它现在是=23
http://www.mysite.com/category/23/cat-name
在分类页面中,我有一些排序和页面选项,如按最新者排序和较低的价格。还有,我有一个网页导航系统
问题是,当请求发生在页面内部时,$\u GET[]不会显示我需要的变量。但是,它在URL中显示为
http://www.mysite.com/category/23/cat-name?page=3
$\u GET变量只显示类别的id,在我们的例子中,它现在是=23,并且忽略了url中的页码
.htaccess内容
您需要在规则末尾包含该标志。这会将任何现有查询字符串附加到您正在规则本身中构造的查询字符串:
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
因此,重写的URI应该是:/cat.php?id=23&page=3在重写规则的末尾添加qsquery字符串append
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1 [L,QSA]
当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有查询字符串,并用新生成的查询字符串替换它。使用[QSA]标志会导致组合查询字符串
使用[QSA]标志,对/pages/123?one=two的请求将映射到/page.php?page=123&one=two。如果没有[QSA]标志,相同的请求将被映射到/page.php?page=123——也就是说,现有的查询字符串将被丢弃 第3页它是固定的吗?或者它应该是id=23?
RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1 [L,QSA]