我正在尝试排序将htaccess中的值传递给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正在运行。我花了几个小时找到没有运气的解决方案。我将不胜感激。
答案 0 :(得分: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
导致zone.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
或者它会匹配啤酒,就好像它是像city.php这样的城市名称?name = beer