htaccess用不同的路径重写规则

时间:2012-09-10 16:26:02

标签: php .htaccess

我已经编写了一条规则,将斜线后的所有内容重定向到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]

例如:

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

2 个答案:

答案 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;

}

非常感谢:)