作为CakePHP的一个相对新人,我希望能够提供一些关于配置Apache和CakePHP以查找包含文件(CSS,JavaScript等)的“正确”方法的建议。
如果我的服务器的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别名的组合我尚未运行过。
答案 0 :(得分:1)
/somepath/cakeapp/css/styles.css
实际上是需要在链接中显示的正确路径。
之所以如此显示是因为cakeapp目录中的 .htaccess 文件将请求重定向(重写)到cakeapp / app / webroot目录。
现在,这种结构存在的原因通常是因为您的应用程序中有“公共”和“非公共”部分。 “非公共”部分包含PHP代码,包括控制器,模型,视图,插件,蛋糕库等。“公共”部分包括css,脚本和图像文件。
现在,您可以将您的/ var / www / html文件夹设为您的应用目录,以确保其安全。要根据自己的喜好完全配置应用程序,请检查cakeapp / app / bootstrap.php文件并更改相关设置。您可以详细了解here。
总之,不用担心。你看到的路径是对的!
答案 1 :(得分:1)
尝试在Cake的根目录/ app和/ app / webroot中的.htaccess文件中定义RewriteBase以指向您的子目录。将它们设置为相应的路径,/ somepath /,/ somepath / app /和/ somepath / app / webroot /