设置CakePHP项目的新副本后,代码中的css引用为:
/my_app_name/css/cake.css
虽然我的css文件的真实位置是:
/my_app_name/webroot/css/cake.css
为什么?
答案 0 :(得分:1)
如果您的CSS文件位于/app/webroot/css/
(默认位置),您不必知道任何其他内容,请将它们包含在您的模板绝对网页中:
<link href="/css/cake.css" rel="stylesheet" type="text/css">
答案 1 :(得分:1)
为什么?
与大多数框架一样,CakePHP默认使用url rewriting(不是要求,也可以是turned off)。对于apache用户,这是通过.htaccess
文件实现的,this one in the root of your application:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
而且another in the webroot - 这些文件的存在意味着网址重写只适用于大多数用户。
应用程序根文件夹中的规则会重写对webroot文件夹的所有请求,因此这些URL实际上是等效的:
http://localhost/my_app_name/some/file.css
http://localhost/my_app_name/webroot/some/file.css
这些重写规则的主要目的是安全性 - 它阻止了访问webroot文件夹之外的应用程序文件的可能性 - 如果使用a production install则不需要这样做。这样做的副作用是,无论是开发风格还是生产风格的安装,网址都保持不变。
the html helper等类会负责了解文件的位置并正确链接到这些文件,不要试图在模板文件中硬编码资源的路径,也就是说不要这样做:
<html>
<link rel="stylesheet" href="/my_app_name/css/cake.css" />
而是这样做:
<html>
<?= $this->Html->css('forms'); ?>
否则,您会发现即使是重命名应用程序这样简单的事情也意味着链接/资产会中断。