【问题标题】:cakephp 1.3 routing questioncakephp 1.3 路由问题
【发布时间】:2011-03-27 22:26:15
【问题描述】:

我正在制作一个静态/动态混合网站。

  1. 如果用户访问 xxx.com/about,我想使用 pages 控制器显示 about.ctp。 似乎它像 /pages/about 一样完成,但如果我想隐藏 /pages,我是否必须这样写:

Router::connect('/about', array('controller' => 'pages', 'action' => 'display', 'about'));

对于所有静态页面?还是有更好的方法?

  1. 某些静态页面可能是分层的。比如/about/history, /about/address, ...我不知道以后维护最简单的方法是什么,比如我应该为每个静态目录制作一个不带模型的控制器还是使用页面控制器并保留所有视图/页面/中的文件。有什么建议吗?

【问题讨论】:

    标签: cakephp-1.3


    【解决方案1】:

    如果您不介意在您的 url 末尾添加一个 .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 路由将接管!

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 2011-02-02
      • 2012-03-03
      • 2012-11-28
      • 2016-04-07
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多