0

我正在尝试对将 htaccess 中的 get 值传递给 php 进行排序:

我有这样的:

RewriteRule ^pubs$ pubs.php RewriteRule ^pubs/beer$ pubs.php?sort=beer

上面的代码工作正常。现在我尝试对子页面(城市)做同样的事情:

RewriteRule ^pubs/(.*)$ district.php?name=$1
RewriteRule ^pubs/(.*)/beer$ district.php?name=$1&sort=beer

链接如下所示:
www.domain.com/pubs/beer - 工作正常
www.domain.com/pubs/new-york/beer - 不工作

我做错了什么?如果我删除RewriteRule ^pubs/(.*)$ district.php?name=$1行,那么链接 www.domain.com/pubs/new-york/beer 正在工作。我花了几个小时寻找没有运气的解决方案。我将不胜感激。

4

1 回答 1

1

如果我删除 RewriteRule ^pubs/(.*)$ district.php?name=$1 行,那么链接 www.domain.com/pubs/new-york/beer 正在工作。

因为 www.domain.com/pubs/new-york/beer 匹配

RewriteRule ^pubs/(.*)$ district.php?name=$1

导致 District.php?name=newyork/beer 而不是匹配

RewriteRule ^pubs/(.*)/beer$ district.php?name=$1&sort=beer

您可以解决此问题的一种方法是:

RewriteRule ^pubs/([^/]*)$ district.php?name=$1

因此,如果您所在城市之后的任何地方有一个额外的斜线,则该规则将被忽略并继续执行第二条规则......请务必将其放在后面

RewriteRule ^pubs/beer$ pubs.php?sort=beer

或者它会匹配啤酒,就好像它是一个城市名称,比如 District.php?name=beer

于 2012-05-16T19:33:12.453 回答