繁体   English   中英

使用干净的网址处理$ _GET请求

[英]Handle $_GET requests with Clean URLs

我有一个基于URL的清晰系统,因此类别将像这样显示

http://www.mysite.com/category/23/cat-name

在类别页面中,我有一些排序和页面选项,例如按最新和较低价格排序。 另外,我有一个页面导航系统

问题是当请求正在页面内发生时, $_GET[] _ $_GET[]没有显示我需要的变量。 但是,它在URL中显示为

http://www.mysite.com/category/23/cat-name?page=3

$_GET变量仅显示类别的ID,在我们的示例中,该ID现在为23并且忽略了网址中的页码。

.htaccess内容

RewriteEngine On
RewriteRule ^category/([0-9]+)/[a-z][-a-z0-9]*$ cat.php?id=$1

您需要在规则末尾添加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

在重写规则的末尾添加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 = two的请求将映射到/page.php?page=123&one=two。 没有[QSA]标志,该请求将被映射到/page.php?page=123-也就是说,现有查询字符串将被丢弃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM