2011-03-27 94 views
0

我做了一個靜態/動態混合網站。cakephp 1.3路由問題

  1. 如果用戶訪問xxx.com/about,我想使用pages controller來顯示about.ctp。 似乎它做像/頁/約,但如果我想隱藏/頁,我必須寫這樣的:

路由器::連接(「/約」,陣列(「控制器」 =>「頁面','action'=>'display','about'));

所有靜態頁面?或者更好的方法?

  1. 某些靜態頁面可能是分層的。像/ about/history,/ about/address,...我不知道最簡單的維護方法是什麼,比如我是否應該爲每個靜態目錄製作一個控制器W/O模型或使用頁面控制器並保留所有文件在views/pages /中。有什麼建議?

回答

1

如果你不介意您的網址的結尾.html擴展,並有改寫控制服務器(mod_rewrite的),你可以添加一個重寫規則,這將直接服務於您的靜態內容,完全旁路蛋糕。這對你來說可能是最簡單的,因爲你所要做的就是在webroot下創建靜態內容/

例如,你可以爲lighttpd添加以下內容(確保你已經加載了mod_rewrite模塊):

url.rewrite-once = (
    "^/.*\.html$" => "$0" 
) 

這意味着:以.html結尾的每個請求(如「/page.html」或「example/page.html」)並將其解除服務。 $ 0是原始請求的關鍵字。

或者,爲Apache(無論是在你的配置或應用程序/ Web根目錄/的.htaccess)請確保您的重寫規則開始與這兩個,這不能不擔任任何現有的文件或目錄:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

請注意,此規則必須位於CakePHP重寫規則之前,以便將其短路並首先提供頁面,否則CakePHP路由將接管!