我正在使用cakephp installation进行生产,我遇到了问题。我使用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文件时,它消除了错误,但它覆盖了所有其他视图调用。
答案 0 :(得分:0)
如果您的托管服务提供商尚未启用mod_rewrite。然后你需要删除.htaccess文件
如果我错了并且mod_rewrite没有任何问题,那么你应该编辑你的htaccess文件并执行类似
的操作<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
答案 1 :(得分:0)
答案 2 :(得分:0)
在大多数共享主机上,您无法更改文档根目录。由于hostmonster has mod_rewrite没有在hostmonster上安装蛋糕的特殊步骤。有几种方法可以安装蛋糕 - 所有这些方法都在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
除非遇到特定问题或需要满足特定要求,否则请勿修改any of the .htaccess files。使用以下命令或等效命令可以很容易地实现这一点:
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 file是相关的。
或者将文件放在任何位置,但将 webroot移动到文档根目录。然后更新the root constant以指向源文件的位置:
// 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's documentation中,cake_install
解释如下:
出于本示例的目的,我们假设您选择将CakePHP安装到/ cake_install。
这只是一个例子。 但是,这是“生产安装”部分中使用的示例,生产安装在文档根目录中没有全部或应用程序文件。使用文档根目录中的源文件设置“生产安装”不是生产安装,它是自定义开发安装(带来自定义问题)。
因此,逻辑选择是(两者都可用/安全使用mod_rewrite):
但不是两者的混合=)