2012-09-10 112 views
-1

我寫了一條規則,將斜線後的所有內容重定向到index.php?section=site。此規則正常工作:htaccess不同路徑的重寫規則

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. 網址,如:?domain.com/login,屬於index.php的部分=網站
  2. 網址如:domain.com/cms/login,屬於index.php?section = cms
+0

逆轉的重寫規則的順序。所以CMS規則是第一位的。 – Virendra

+0

嘗試過,沒有幫助 – user1403317

+0

嘗試: 'RewriteRule cms /(.*)index.php?section = cms [L] RewriteRule(。*)(\ /)?的index.php?節= site' – Virendra

回答

1

如果這是您唯一的規則,您的目標是使用index.php作爲Front-end Controller,我建議使用FallbackResource並使用PHP解析/路由請求。

FallbackResource /index.php 

在最後,它避免了mod_rewrite的開銷和複雜度,可以說是提供了更大的靈活性。

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; 

} 

不管怎樣,謝謝:)