使用Mod Rewrite获取多个变量

时间:2016-06-06 00:04:25

标签: .htaccess mod-rewrite

这是我的.htaccess文件:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^products/([^/\.]+)/?$ /product.php?$1
RewriteRule ^category/([^/\.]+)/?$ /category.php?cat=$1&page=$2 [QSA,L]

我放入浏览器的链接是site.com/category/batteries/1/,其中电池是类别,1是页面。但是,我的网站只获得该类别(因此site.com/category/batteries/可以使用,但site.com/category/batteries/1/会返回404.)

category.php获取cat中传递的值,但不获取页面中的值。我一直在阅读这篇文章,但我无法理解我哪里出错了。

2 个答案:

答案 0 :(得分:1)

您错过了一个捕获组,因此永远不会设置$2。尝试:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^products/(.*+)/?$ product.php?$1
RewriteRule ^category/(.*+)/(\d+)/?$ category.php?cat=$1&page=$2 [QSA,L]

答案 1 :(得分:0)

更改正则表达式。只是在斜杠之间获取文本而不是试图找到数字给了我想要的结果。

RewriteRule ^category/([^/]+)/([^/]+)/? /category.php?cat=$1&page=$2 [QSA,L]