2

我正在通过cakephp 安装以供生产使用,但我遇到了问题。我使用 hostmonster,所以这是一个使用 LAMP 堆栈的共享服务器。文档要求您更改根目录,如下所示:

DocumentRoot /cake_install/app/webroot

为此,我在 .htaccess 文件中添加了以下语句:

RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /cake_install/app/webroot/$1 [L,R=301]

这导致了以下错误:

Error: The view for AppController::webroot() was not found.

当我导航到 www.example.com 时,我被带到了正确的地址,但出现了错误。如果我将 index.php 添加到地址或显然添加到重写规则,这些错误就会消失。

那么,我在这里做错了什么?文档是否不正确,因为重写规则应该有额外的 index.php,没有它应该是地址工作,还是其他地方有问题?

更新:错误的第二部分说:

Error: Confirm you have created the file: /home2/cadwolfc/public_html/cake_install/app/View/App/webroot.ctp

我下载的蛋糕版本在 /app/View 文件夹中没有任何内容。当我创建 /App/webroot.ctp 文件时,它消除了错误,但它覆盖了所有其他视图调用。

4

3 回答 3

0

我猜这就是您要查找的内容: HostMonster - 如何从子文件夹(.htaccess)托管主域

于 2013-11-08T23:58:44.233 回答
0

在大多数共享主机上,您无法更改文档根目录。由于hostmonster 有 mod_rewrite没有在 hostmonster 上安装 cake 的特殊步骤。有几种安装 cake 的方法——它们都在 hostmonster 上有效。

使用开发安装

设置应用程序的最简单方法是使用开发安装,即存在以下文件夹结构:

/home2/cadwolfc/public_html/app
/home2/cadwolfc/public_html/lib
/home2/cadwolfc/public_html/plugins
/home2/cadwolfc/public_html/vendors
/home2/cadwolfc/public_html/.htaccess
/home2/cadwolfc/public_html/index.php

除非遇到特定问题或需要满足特定要求,否则不要编辑任何 .htaccess 文件。这可以通过以下命令或等效命令轻松实现:

cd /home2/cadwolfc
mv public_html old_public
git clone https://github.com/cakephp/cakephp.git public_html

或符号链接文档根目录

或者将您的文件放在服务器上的任何位置,只需符号链接 webroot:

/home2/cadwolfc/anywhere/app
/home2/cadwolfc/anywhere/lib
/home2/cadwolfc/anywhere/plugins
/home2/cadwolfc/anywhere/vendors
/home2/cadwolfc/anywhere/.htaccess
/home2/cadwolfc/anywhere/index.php
/home2/cadwolfc/public_html -> ../anywhere/app/webroot

这样,只有 webroot 是公共的,并且只有webroot .htaccess 文件是相关的。

或复制/移动 webroot

或者将您的文件放在任何地方,但webroot 移动到文档根目录。然后更新根常量以指向源文件所在的位置:

// app/webroot/index.php
/**
 * The full path to the directory which holds "app", WITHOUT a trailing DS.
 *
 */
if (!defined('ROOT')) {
    define('ROOT', '/home2/cadwolfc/overhere';
}

cake_install 是什么意思?

Cake 的文档中,cake_install解释如下:

出于本示例的目的,我们假设您选择将 CakePHP 安装到 /cake_install 中。

这只是一个例子。但是,这是“生产安装”部分中使用的示例,生产安装没有文档根目录中的所有或应用程序文件。使用文档根目录中的源文件设置“生产安装”不是生产安装,而是自定义开发安装(带来自定义问题)。

因此,合乎逻辑的选择是(两者都可以通过 mod_rewrite 使用/安全):

  • 使用标准开发安装
  • 使用实际的生产安装

但不是两者的混合体=)

于 2013-11-09T00:26:37.333 回答
0

如果您的托管服务提供商未启用 mod_rewrite。然后你需要删除 .htaccess 文件

  • /.htaccess
  • /app/.htaccess
  • /app/webroot/.htaccess

如果我错了并且 mod_rewrite 没有任何问题,那么您应该编辑您的 htaccess 文件并执行类似的操作

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
</IfModule>
于 2013-11-08T18:28:08.607 回答