【问题标题】:CSS not working with CakePHP, using MAMPCSS 不适用于 CakePHP,使用 MAMP
【发布时间】:2011-11-02 08:47:17
【问题描述】:

我在我的 MacBook Pro 上使用 MAMP 作为本地服务器。 PHP 和 MySql 运行良好。但是,我对 CakePHP 有一个奇怪的问题 - CSS 仅适用于我网站的主页,并且仅适用于以下两个路径: 'localhost' 和 'localhost/index.php'

然而,使用 'localhost/index.php/' 只返回裸露的无样式标记,就像站点中的所有其他页面一样。斜线结尾如何破坏 CSS?

一些搜索表明这可能是 apache 中的 mod 重写问题,但老实说,我已经超出了我的深度 - 我不知道如何测试我所做的更改是否会打开 mod 重写。

由于 CSS 仅适用于 2 条特定路径,这可能是我的路线有问题吗?我只定义了 2 个 - '/' 和 '/index.php/' - 它们都是一样的。

任何帮助将不胜感激, 詹姆斯

【问题讨论】:

  • 请显示您用于将 CSS 添加到布局的代码。您可能使用的是相对文件路径而不是绝对路径。

标签: css cakephp mamp


【解决方案1】:

看起来您的 MAMP 配置(或 MAMP 中的 Apache 禁用了 mod_rewrite。看起来您必须遵循 http://documentation.mamp.info/en/mamp-pro/advanced-functions/edit-configuration-files 说明,编辑 apache 的 httpd.conf 模板,搜索 mod_rewrite 并在配置模板中取消注释此行。

【讨论】:

  • 这里不太可能出现这种情况——CakePHP 不使用美化 URL 来提供 CSS 文件。
  • CakePHP 使用 .htaccess 将内容路由到 app/webroot 目录,在该目录中开始代码调度过程,并且 - 通常存储所有资产。因此,当使用 domain.com/img/whatever.jpg 之类的路径访问资产时 - 要么必须通过 mod_rewrite 处理,要么需要指定完整路径 (/app/webroot/img/whatever.jpg)。这也与 css 和 js 有关。
【解决方案2】:

问题很可能是因为 tbwcf 表示您正在尝试使用相对文件路径加载 CSS 文件,但您应该始终使用 CakePHP's helpers 将资源文件添加到布局:

<?php echo $this->Html->css('style'); ?>

上面会输出

<link rel="stylesheet" type="text/css" href="/css/style.css" />

好处是,如果您将应用安装到其他目​​录,路径会自动更改:

<link rel="stylesheet" type="text/css" href="/other/directory/css/style.css" />

不要不要使用像../css这样的相对文件路径。除了最简单的情况外,它会再次破坏布局。

【讨论】:

    【解决方案3】:

    标记末尾的斜线很可能会破坏样式表的文件路径。例如,如果您的 css 被引用为

    <link rel="stylesheet" href="css/stylesheet.css" />
    

    然后将斜杠添加到页面 URL 意味着您需要后退一步以获取相同的样式表,因为它不再与您所在的页面位于同一文件夹中。

    所以你可以添加

    ../ before the reference like <link rel="stylesheet" href="../css/stylesheet.css" />
    

    或者在这种情况下可能更简单的解决方案是绝对引用您的样式表:

     <link rel="stylesheet" href="http://localhost:8888/project/css/stylesheet.css" />
    

    【讨论】:

    • 感谢大家的回复。原来是由于相对路径。我将 CSS 路径更改为绝对路径,这没有任何区别。然后我将 jquery 路径更改为绝对路径,因为我使用的是较少的 css 框架和语义网格系统。这解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2016-07-15
    • 2013-11-20
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多