在CakePHP中,如果我将href链接指定为href =“/ css / main.css”,则它不会引用webroot中的css文件夹。只有当我提到href =“http://localhost/cake/app/webroot/css/main.css”时才会应用css。
<link type="text/css" rel="Stylesheet" href="/css/main.css" media="screen,projection" />
这不适用于指定的CSS。
这是什么原因? 为什么代码没有识别正确的文件夹?
答案 0 :(得分:5)
因为它以/开头,所以它被视为绝对路径(来自站点的根目录)。浏览器将其转换为
http://localhost/css/main.css
您可以指定正确的绝对路径
/cake/app/webroot/css/main.css
或完整路径
http://localhost/cake/app/webroot/css/main.css
或相对路径,例如
../css/main.css
答案 1 :(得分:3)
答案 2 :(得分:1)
你为什么不使用核心助手?它将生成CSS文件 Inserting Well-Formatted elements
所需的路径并检查主配置文件(/app/config/core.php),也许你没有使用mod_rewrite。检查core.php是否注释了此行Configure :: write('App.baseUrl',env('SCRIPT_NAME'));
答案 3 :(得分:0)
如果你的绝对网址是
http://localhost/cake/app/webroot/css/main.css
,您的网址是
/css/main.css
我认为浏览器会将您提供的网址翻译为
http://localhost/css/main.css
(例如,您可以使用Firebug,“net”标签查看
如果是这种情况,你应该:
但是,在我看来,使用以“http://
”开头的网址是确保您的CSS包含始终正常的最佳方式,无论您进入哪个目录或网址... < / p>
答案 4 :(得分:0)
这样定义BASEURL的函数只允许你在一个地方更新..我用的东西就像......
define("DEVELOPMENT", true);
function setReporting()
{
if (DEVELOPMENT)
{
define("BASEURL", "http://localhost/localDir", true);
error_reporting(E_ALL);
}
else
{
define("BASEURL", 'http://' . $_SERVER['SERVER_NAME'], true);
error_reporting(0);
}
}
setReporting();
答案 5 :(得分:0)
当你部署cake时,url应该只是/css/main.css,因为服务器的DocumentRoot将指向cake / app / webroot目录。
我建议您阅读this article from Cake's online docs以获取更多信息。请注意,本文引用的是1.1版本的Cake,但也应该在1.2版本中使用。
祝你好运!