父和子文件夹上的mod_rewrite

时间:2013-06-13 12:45:06

标签: apache .htaccess mod-rewrite

我在Apache下使用mod_rewrite遇到了一些奇怪的行为。以下是当前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]

我对上述规则的期望是,访问domain.com/BenM/collections/0/1/之类的网址会将我带到category控制器,而domain.com/BenM/collections/0/会将我带到collection控制器

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

我的理解是,如果指定了[L]标志,那么Apache就不会再进行重写了。

这里有没有人指出正确的方向,因为我无法击败这个......重写应该是什么样才能实现我上面解释过的功能?

1 个答案:

答案 0 :(得分:1)

你正在处理与贪婪相关的问题。此外,你可能想要至少一个长度,你几乎肯定不想在你的参数中使用斜杠。

潜在的解决方案:

^([^/]+)/collections/([^/]+)/([^/]+)/?$
^([^/]+)/collections/([^/]+)/?$