CakePHP没有';t向CSS输出正确的路径


CakePHP doesn't output correct path to CSS

刚开始在CakePHP中开发,安装并配置了它。然而,应用程序没有向样式表输出正确的路径。

查看页面源时,样式表的路径为:

/rm-lab/css/cake.generic.css

这导致404错误页面。

如果我试图通过此路径访问样式表,就会加载样式表;

/rm-lab/app/css/cake.generic.css

感谢您的帮助。

更新:在尝试了许多解决方案后,我刚刚在另一个子文件夹中重新安装了cakeHP,这就很好地加载了CSS。我认为这与.htaccess文件有关。

您的蛋糕应用程序似乎位于子文件夹中。您应该在app/webroot 中的.htaccess文件中设置重写基础

在app/webroot/.htaccess中,添加以下行:

RewriteBase /rm-lab

您的.htaccess文件现在应该如下显示:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /rm-lab
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

您在使用主题吗?如果是这样,您可能需要切换路径。请参阅此处(向下滚动一点):

http://book.cakephp.org/view/1093/Themes

在我的脑海中,这似乎是一个Apache级别的问题。Apache中的DocumentRoot是否设置为/app目录?这肯定会有所帮助。一般来说,我认为你应该用Cake来检查Apache的东西(看看应用程序中的.htaccess文件)。为了找出问题,我将CakePHP配置为而不是在core.php中使用mod_rewrite。

尝试在public_html文件夹中创建一个名为"test_rewrite.php"的新脚本访问该文件以确保在您的共享主机帐户上启用了mod_rewrite。如果它没有加载,你可能想联系你的主机提供商来启用它。

<?php
if (in_array("mod_rewrite", apache_get_modules())) {
    echo "mod_rewrite loaded";
} else {
    echo "mod_rewrite not loaded";
}
?>

我认为你试图让HtmlHelper::css方法做一些它不应该做的事情

(需要混合$path)--CSS的名称包含的样式表或数组CSS样式表的名称。如果$path为前缀为"/",路径将为相对于您的应用程序。否则,路径将相对于CSS路径,通常webroot/css

cake.generic.css文件确实应该使用您在视图中使用的$this->Html->css('cake.generic')代码放置在app/webroot/css文件夹中。

下面是API文档的链接:HtmlHelper类文档

确保您的apache DocumentRoot设置为/path/to/your/site/in/a/subdr/webroot

webroot部分是至关重要的-它防止来自webroot之外的文件被访问,并且webroot文件夹中的htaccess会跳过为webroot(img、css等)内的实际文件加载dispatch index.php文件

如果您正确设置了DocumentRoot路径,并且从站点文件夹根目录到蛋糕安装的子文件夹包含在.htaccess文件中,如上所述,路径问题应该会自行解决。

您可能想让我们知道服务器上蛋糕安装的绝对路径,并向我们展示带有DocumentRoot详细信息的VirtualHost块。