我已经编写了一条规则,将斜线后的所有内容重定向到index.php?section=site
。这条规则很好:
RewriteRule (.*)(\/)? index.php?section=site
如果uri是/cms/....
,我想将其重定向到index.php?section=cms
。问题是第一条规则说所有内容都转到index.php?section=site
所以如果网址的开头是cms,我怎么能避免这种情况?
我试过了:
RewriteRule (.*)(\/)? index.php?section=site
RewriteRule cms\/(.*) index.php?section=cms [L]
例如:
答案 0 :(得分:1)
如果这是您唯一的规则,并且您的目标是将index.php
用作Front-end Controller,我建议您使用FallbackResource
并使用PHP解析/路由请求。
FallbackResource /index.php
最后,它避免了mod_rewrite
的开销和复杂性,可以说可以提供更大的灵活性。
答案 1 :(得分:0)
我找到了简单的解决方案,因为我尝试过的所有内容都没有用到。
.htaccess文件:
RewriteRule (.*) index.php
索引文件:
$uri = $_SERVER['REQUEST_URI'];
$ex = explode("/",$uri);
switch($ex[2])
{
case "cms":
// cms dispatch here
break;
default:
// site dispatch here
break;
}
非常感谢:)