2010-12-01 50 views
0

作为CakePHP的新手,我希望能够通过配置Apache和CakePHP来查找包含文件(CSS,JavaScript等)的“正确”方式提供一些建议。CakePHP HTML帮助器CSS标记和Apache别名

如果我的服务器的DocumentRoot设置为/var/www,并且我在/var/www/somepath/cakeapp上安装和配置CakePHP,我可以按照预期在URL http://example.com/somepath/cakeapp处访问应用程序。

但是,如果我使用HTML助手在我的默认布局中生成CSS链接标记,我开始遇到麻烦。例如,代码

echo $html->css('styles'); 

生产本文标签:

<link rel="stylesheet" type="text/css" href="/somepath/cakeapp/css/styles.css" /> 

然而,实际上CSS住在/somepath/cakeapp/app/webroot/css

如果CakePHP应用程序是我域中唯一的应用程序,我可以将DocumentRoot指向/var/www/somepath/cakeapp/app/webroot,正如文档中的建议,并且所有的都可能(大概)很好。但是,这不是我的选择。

是否有一种普遍接受的配置Apache和CakePHP的正确方法,以便HTML帮助程序可以生成正确的链接标记?

编辑:我觉得必须有一些CakePHP配置和Apache Aliases的组合,我还没有运行过。

回答

1

/somepath/cakeapp/css/styles.css实际上是需要在链接中显示的正确路径。

它被显示的原因是因为你的cakeapp目录中的.htaccess文件将请求重定向(重写)到cakeapp/app/webroot目录。

现在,这个结构甚至存在的原因是,一般来说,你的应用程序中有“公共”和“非公共”部分。 “非公开”部分包含PHP代码,包括控制器,模型,视图,插件,蛋糕库等。“公共”部分包括css,脚本和图像文件。

现在,你可能使你的/ var/www/html文件夹作为你的应用程序目录,以使其安全。为了完全配置您的应用程序,请检查cakeapp/app/bootstrap.php文件并更改相关设置。您可以了解有关here的更多信息。

总之,不用担心。你看到的道路是正确的!

+0

感谢您的详细解答。最后,如你所说,我的配置很好。让我感到沮丧的是,我意外地提到了一个不存在的样式表。显然,当它没有找到该文件时,CakePHP继续按照通常的方式解释请求,寻找一个`CssController`(当然,没有找到它)。 – eaj 2010-12-01 20:41:06

1

尝试在Cake的根目录/ app和/ app/webroot的.htaccess文件中定义RewriteBase以指向您的子目录。将它们设置为相应的路径,/ somepath /,/ somepath/app /和/ somepath/app/webroot/