2010-09-22 184 views
0

我有网址的游戏/的Xbox/2
2是页码,我需要的网址改写。这是我使用的是什么:问题与.htaccess和重写规则

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

的第一条规则工作正常,但第二个是返回consoles.php $ 1代替的Xbox

回答

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被视为一个整体

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]+),而是将它改为([^/]+),因为它会匹配除斜线之外的所有内容,所以你可能会有奇怪的控制台或游戏名称。如果你想让它更加具体,那么这种方式提供了最一般的用例。