2012-07-31 50 views
0

我想要去的是子类别/ 1 /日期,因此它通过subcat_id-> 1 sort-> date。我只能在PHP中获得第一个。让htaccess通过多个变量

RewriteRule ^subcategory/([0-9]+) subcategory.php?subcat_id=$1 
RewriteRule ^subcategory/([0-9]+)(/([a-zA-Z0-9_-]+)) subcategory.php?subcat_id=$1&sort=$2 

任何想法,我的代码出错了吗?

+0

尝试使用$ 3而不是$ 2 .. – MilMike 2012-07-31 16:00:29

+0

我发现与$ 3没有什么区别。我使用echo $ _GET ['sort']; – kezi 2012-07-31 16:03:54

+1

也可以考虑在规则的末尾加上$(或者$和literal之间的OR),这样如果URL匹配第二个模式,它就不会匹配第一个。 – 2012-07-31 16:04:55

回答

2

好吧我通过切换规则并将“/”放在外面来解决了我的问题。还要加上$感谢ctrahey。

RewriteRule ^subcategory/([0-9]+)/([a-zA-Z0-9_-]+)$ subcategory.php?subcat_id=$1&sort=$2 
RewriteRule ^subcategory/([0-9]+)$ subcategory.php?subcat_id=$1 

尽管感谢您的帮助!

+0

将此标记为已接受的答案 – 2012-07-31 16:15:11

+0

您不需要双括号(()),因为$ 3将与$ 2相同 – Waygood 2012-07-31 16:15:27

+1

另请注意,仅用$,就不会与具有现有GET参数的URL匹配(并且目前您不会通过他们如果他们在那里)。 – 2012-07-31 16:29:11

2

试着颠倒顺序,因此,如果存在多个参数,它会被捕获的第一

RewriteRule ^subcategory/([0-9]+)/([a-zA-Z0-9_-]+)$ subcategory.php?subcat_id=$1&sort=$2 
RewriteRule ^subcategory/([0-9]+)$ subcategory.php?subcat_id=$1 

该死让我提前!