【问题标题】:CakePHP doesn't output correct path to CSSCakePHP 没有输出正确的 CSS 路径
【发布时间】:2011-05-24 13:46:16
【问题描述】:

刚开始用 CakePHP 开发,安装并配置它。但是,应用程序不会输出正确的样式表路径。

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

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

这会导致 404 错误页面。

如果我尝试通过此路径访问样式表,则会加载它;

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

感谢您的帮助。

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

【问题讨论】:

  • 也许我错了(从未使用过任何 php 框架),但请尝试 ../rm-lab/css/cake.generic.css
  • @Elaine Marley 感谢您的帮助,但我在 Cake 中使用 Html 帮助器来输出指向 CSS 的链接; echo $this->Html->css('cake.generic');

标签: php css cakephp cakephp-1.3


【解决方案1】:

您的蛋糕应用似乎位于子文件夹中。您应该在 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>

【讨论】:

  • 是的,它在一个子文件夹中。我将该行添加到 app/webroot/ 中的 .htaccess 文件中,但它仍然没有输出到 css 的正确路径。
【解决方案2】:

您使用的是主题吗?如果是这样,您可能需要切换路径。看这里(向下滚动一点):

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

【讨论】:

  • 不使用主题,只是将default.ctp复制到/public_html/rm-lab/app/views/layouts/
【解决方案3】:

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

【讨论】:

  • 他的 DocumentRoot 不应该是 'app' 或任何其他包含 'app' 文件的文件夹。
【解决方案4】:

尝试在您的 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";
}
?>

【讨论】:

    【解决方案5】:

    我认为您正试图让HtmlHelper::css 方法做一些它不应该做的事情。根据文档:

    (mixed $path required) -- CSS 的名字 样式表或数组包含 CSS 样式表的名称。如果 $path 是 以'/'为前缀,路径将是 相对于您的 webroot 应用程序。否则,路径将 相对于您的 CSS 路径,通常 webroot/css.

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

    这里是 API 文档的链接:HtmlHelper Class documentation

    【讨论】:

    • 我不认为是这种情况。
    • 你不认为这是什么意思?我还注意到您在原始问题中提供的文件夹结构不正确。你有/rm-lab/css/cake.generic.css? CakePHP 安装的默认文件夹结构不是这样的。这可能是您的问题的一部分吗?
    • 我试图让 Html::css 方法输出样式表的路径,这不是该方法的用途吗?我没有尝试使用该方法做任何其他事情。我的问题指出/rm-lab/css/cake.generic.css 是查看网页源时显示的路径,即这不是我自己指定的路径。希望这是有道理的。
    【解决方案6】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 2015-07-06
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多