0

mod_rewrite我在 Apache 下使用时遇到了一些奇怪的行为。这是当前的RewriteRules外观:

RewriteRule ^(.*)/collections/(.*)/(.*)/?$ bootstrap.php?controller=category&user=$1&collection=$2&category=$3 [L]
RewriteRule ^(.*)/collections/(.*)/?$ bootstrap.php?controller=collection&user=$1&collection=$2 [L]

我对上述规则的期望是访问 URLdomain.com/BenM/collections/0/1/应该带我到category控制器,而domain.com/BenM/collections/0/应该带我到collection控制器。

目前,两个 URL 结构都重写为bootstrap.php?controller=category....

我的理解是,如果[L]指定了标志,Apache 不会再查看并执行重写。

任何人都可以在这里指出正确的方向,因为我无法击败这个......重写应该是什么样子才能实现我上面解释的功能?

4

1 回答 1

1

您正在处理与贪婪相关的问题。此外,您可能希望长度至少为 1,而且您几乎可以肯定不希望参数中出现斜线。

潜在的解决方案:

^([^/]+)/collections/([^/]+)/([^/]+)/?$
^([^/]+)/collections/([^/]+)/?$
于 2013-06-13T12:59:18.740 回答