我一直在localhost上构建,所有这些东西都能完美地工作。现在尝试将站点加载到共享主机上。我已经解决了大多数问题,并且实际上有一个工作站点,但是没有任何CSS。

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

public_html位于:/ home / public_html

在public_html / index.php中,我能够摆脱丢失的文件错误的唯一方法是执行此操作...

require '../cake/app/webroot' . DIRECTORY_SEPARATOR . 'index.php';

public_html中的.htaccess:
 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

我的应用是从命令行烘焙的。
整个链中所有的index.php和.htaccess文件都保持不变。
/cake
/cake/webroot
/cake/app
/cake/app/webroot

它只是找不到所有css和js文件的路径。
在我的default.ctp中,我使用了标准的html帮助器链接。
echo $this->Html->css('default');

我在谚语的结尾。任何帮助表示赞赏。
在localhost上,我将apache目录指向/ cake / app,但是我敢肯定我无法访问共享主机上的apache配置文件,因此我将public_html index.php指向/ cake / app的原因。可能不正确,但是自该站点开始工作以来,感觉就像我朝着正确的方向前进。

最佳答案

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

听起来您的虚拟主机设置不正确。 (这就是CSS在public_html而不在webroot目录中起作用的原因)。

基本上,我们只允许通过app/webroot/访问我们的应用程序。这将在index.php提供的webroot中加载cakePHP,以为每个请求加载controllers

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

<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>

现在..外界可以访问的唯一目录是webroot中的所有内容,可以是JSCSSImagesFiles或您需要的任何其他资产。

这是应该设置的方式,您不希望人们能够访问webroot之外的文件(即所有其他CakePHP文件)。

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

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

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

View here for more info on change cakephp webroot folder: CAKEPHP - Change default path to webroot

关于php - Cakephp Assets 未从webroot文件夹中获取。缺少js和CSS,,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17850316/

10-11 11:31