.htaccess和RewriteRule的问题

时间:2010-09-22 22:54:28

标签: .htaccess mod-rewrite

我的网址类似于games / xbox / 2 2是我需要重写网址的页码。这就是我正在使用的:

RewriteRule games/(.*?)/$ games/consoles.php?console=$1 
RewriteRule games/(.+?)/(.+?)/$ games/consoles.php?console=$1&page=$2

第一个规则正常但第二个规则是将consoles.php作为$ 1而不是xbox

返回

2 个答案:

答案 0 :(得分:0)

RewriteRule games/([A-Za-z0-9]+)/?$ games/consoles.php?console=$1 
RewriteRule games/([A-Za-z0-9]+)/([0-9]+)/?$ games/consoles.php?console=$1&page=$2 

使用(.*?)甚至匹配/字符,因此xbox / 2被视为一个整体

答案 1 :(得分:0)

尝试类似:

RewriteRule games/([^/]+)/([^/]+)/?$ games/consoles.php?console=$1&page=$2 [L]
RewriteRule games/([^/]+)/?$ games/consoles.php?console=$1 [L]

我首先将你最具体的规则放在第一位 - 这样你就不会做一般的匹配,然后是一个更具体的匹配,一般重写。

我还指定了[L]标志,表示您希望引擎在此时停止寻找更多匹配项。由于[L]标志,在这种情况下重新排序规则是多余的,但这是一个很好的做法。

我也略微改变了表达方式。我没有像之前的海报那样使用([A-Za-z0-9]+),而是将其更改为([^/]+),因为除了斜杠之外,它将匹配所有内容,因此您可以拥有奇怪的控制台或游戏名称。如果你想让它更具体,请随意使用,但这种方式提供了最常用的用例。