Cakephp资产无法从webroot文件夹中获取..缺少js和css,

Ste*_*son 2 php .htaccess virtualhost cakephp-2.0

我一直在localhost上构建,所有这些东西都很完美.现在尝试在共享主机上加载该站点.我已经解决了大部分问题,实际上有一个工作网站,但没有任何CSS.

布局:我的应用程序位于:/ home/cake/app

public_html位于:/ home/public_html

在public_html/index.php中,我能够摆脱丢失文件错误的唯一方法就是这样做......

require '../cake/app/webroot' . DIRECTORY_SEPARATOR . 'index.php';
Run Code Online (Sandbox Code Playgroud)

public_html中的.htaccess:

 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我的应用程序是从命令行中烘焙出来的.通过链的所有index.php和.htaccess文件都是不受影响的.

/cake
/cake/webroot
/cake/app
/cake/app/webroot
Run Code Online (Sandbox Code Playgroud)

它只是找不到所有css和js文件的路径.在我的default.ctp中,我使用了标准的html帮助程序链接.

echo $this->Html->css('default');
Run Code Online (Sandbox Code Playgroud)

我正处于众所周知的绳索的尽头.任何帮助赞赏.在localhost上,我将apache目录指向/ cake/app,但我很确定我无法访问共享主机上的apache配置文件,因此我将public_html index.php指向/ cake/app .可能不对,但感觉自从网站开始工作以来我正朝着正确的方向前进.

Ani*_*nil 5

你的所有CSS和JS都应该在app/webroot目录中.

听起来你错误地设置了你的虚拟主机.(这就是CSS工作public_html但不在webroot目录中的原因).

基本上,我们只允许访问我们的应用程序app/webroot/.这将加载由提供的index.php内部来加载每个请求.webrootcakePHPcontrollers

您的虚拟主机文件应如下所示:

<VirtualHost *:80>

    # Correct: Notice the "/app/webroot/"
    DocumentRoot "/path/to/app/public_html/app/webroot/"

    # Below is INCORRECT
    # Incorrect: DocumentRoot "/path/to/app/public_html/app/"

    ServerName yourdomain.com

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

现在..从外界访问的唯一的目录是在一切webroot,这可能是JS,CSS,Images,Files或者你需要的任何其他资产.

这是它应该如何设置,你不希望人们能够访问你的文件webroot(即所有其他CakePHP文件).


在共享主机提供程序上,您将需要稍微不同的设置(您无法访问共享服务器的vhost).这解释了OP所说的略微不同的目录结构.有关在共享主机上部署cakephp的更多信息,请阅读此处.

http://bakery.cakephp.org/articles/gedm/2009/08/29/installing-cakephp-on-shared-hosting

而不是index.php将webroot包含在另一个index.php(在你的内部public_html)中,考虑将webroot文件夹entirley更改为你的public_html.

有关更改cakephp webroot文件夹的更多信息,请 单击此处:CAKEPHP - 将默认路径更改为webroot