我有网址的游戏/的Xbox/2
2是页码,我需要的网址改写。这是我使用的是什么:问题与.htaccess和重写规则
RewriteRule games/(.*?)/$ games/consoles.php?console=$1
RewriteRule games/(.+?)/(.+?)/$ games/consoles.php?console=$1&page=$2
的第一条规则工作正常,但第二个是返回consoles.php $ 1代替的Xbox
我有网址的游戏/的Xbox/2
2是页码,我需要的网址改写。这是我使用的是什么:问题与.htaccess和重写规则
RewriteRule games/(.*?)/$ games/consoles.php?console=$1
RewriteRule games/(.+?)/(.+?)/$ games/consoles.php?console=$1&page=$2
的第一条规则工作正常,但第二个是返回consoles.php $ 1代替的Xbox
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被视为一个整体
试着这么做:
RewriteRule games/([^/]+)/([^/]+)/?$ games/consoles.php?console=$1&page=$2 [L]
RewriteRule games/([^/]+)/?$ games/consoles.php?console=$1 [L]
我首先把你最具体的规则放在第一位 - 这样你就不会进行一般性比赛,那么稍后更具体的比赛就会导致整体重写。
我还指定了[L]
标志来表示您希望引擎停止在此处寻找更多匹配。由于[L]
标志,重新排列规则在这种情况下是多余的,但这是一个很好的做法。
我也稍微改变了表达式。我没有像前面的海报说的那样使用([A-Za-z0-9]+)
,而是将它改为([^/]+)
,因为它会匹配除斜线之外的所有内容,所以你可能会有奇怪的控制台或游戏名称。如果你想让它更加具体,那么这种方式提供了最一般的用例。