重写.htaccess 2 GET变量不分裂?

时间:2013-04-14 17:29:42

标签: php .htaccess rewrite

尝试编写重写规则以捕获两个GET变量

http://stackoverflow.com/blogs/category/general/1

RewriteRule ^blogs/category/(.+)/?$ blogs.php?category=$1 [PT,L,QSA]
RewriteRule ^blogs/category/(.+)/([0-9]+)/?$ blogs.php?category=$1&page=$2 [PT,L,QSA]

但是,当我从标题中抓取它们时,它看起来像这样吗?

$_GET['category'] = "general/1";
$_GET['page'] = "";

正如您所看到的,我有两个规则,一个用于提供类别,一个用于何时提供页码。我不确定这种方法可能是错的。

我在这里做错了什么?如何使用重写规则正确分离这些变量(我知道我可以在php中破解它,但这很难看)

1 个答案:

答案 0 :(得分:1)

我认为您只需要切换它们,以便首先处理更具体的一个:

RewriteRule ^blogs/category/(.+)/([0-9]+)/?$ blogs.php?category=$1&page=$2 [PT,L,QSA]
RewriteRule ^blogs/category/(.+)/?$ blogs.php?category=$1 [PT,L,QSA]

进一步解释一下:如果没有另外指定,所有正则表达式都是贪婪的。这意味着,正则表达式试图尽可能多地获取。 (。+)匹配“general / 1”。