-1

我写了一条规则,将斜杠后的所有内容重定向到index.php?section=site. 这条规则很好用:

RewriteRule (.*)(\/)? index.php?section=site

如果 uri 是/cms/....我想将它重定向到index.php?section=cms. 问题是第一条规则说明一切都会发生,index.php?section=site所以如果 url 的开头是 cms ,我怎么能避免这种情况?

我试过这个:

RewriteRule (.*)(\/)? index.php?section=site
RewriteRule cms\/(.*) index.php?section=cms [L]

例如 :

  1. url like : domain.com/login ,属于 index.php?section=site
  2. url like : domain.com/cms/login ,属于 index.php?section=cms
4

2 回答 2

1

如果这是您唯一的规则并且您的目标是index.php用作前端控制器,我建议使用FallbackResourcePHP 使用和解析/路由请求。

FallbackResource /index.php

最后,它避免了开销和复杂性,mod_rewrite并且可以说提供了更大的灵活性。

于 2012-09-11T03:25:44.193 回答
0

我找到了简单的解决方案,因为我用 htaccess 尝试的一切都没有奏效。

.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;

}

不管怎么说,还是要谢谢你 :)

于 2012-09-11T12:43:10.657 回答