cakephp 1.3路由问题

时间:2011-03-27 22:26:16

标签: cakephp-1.3

我正在创建一个静态/动态混合网站。

  1. 如果用户访问xxx.com/about,我想使用pages controller来显示about.ctp。 它似乎像/ pages / about一样,但如果我想隐藏/页面,我是否必须这样写:
  2. Router :: connect('/ about',array('controller'=>'pages','action'=>'display','about'));

    对于所有静态页面?或者更好的方式?

    1. 某些静态页面可能是分层的。喜欢/ about / history,/ about / address,...我不知道以后最简单的维护方式,比如我是否应该为每个静态目录创建一个没有模型的控制器,或者使用页面控制器并保留所有views / pages /中的文件。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您不介意在网址末尾添加.html扩展名并重写对服务器的控制权(mod_rewrite),则可以添加重写规则,直接为您的静态内容提供服务并完全绕过Cake。这对您来说可能是最简单的,因为您只需要在webroot /

下的某处创建静态内容

例如,您可以为lighttpd添加以下内容(确保已加载mod_rewrite模块):

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

其转换为:将每个请求以.html结尾(例如“/page.html”或“example / page.html”)并将其解压缩。 $ 0是原始请求的关键字。

或者,对于Apache(在您的配置或app / webroot / .htaccess中),请确保您的重写规则以这两个开头,即提供任何现有文件或目录:

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

请注意,此规则必须在CakePHP重写规则之前进行,以便将其短路并首先提供页面,否则CakePHP路由将接管!