由于共享主机 DocumentRoot,CakePHP 3 链接出现问题

Having problems with CakePHP 3 links due to shared hosting DocumentRoot

所以,我搜索并发现了一些类似的问题,但 none 的答案对我有用。

让我解释一下情况。我构建了一个 CakePHP 3,它在我的本地机器上运行良好。当我最终部署到服务器时,事情变得非常奇怪。

基本上,当我使用 link() 或 css() 或 Html Helper 的其他方法时,CakePHP 添加整个路径(从根开始)。所以,我会这样写:

<?= $this->Html->css( 'main.css' ) ?> 

输出应该是:

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

但我得到的是:

<link rel="stylesheet" href="/var/www/html/mydomainname.net/web/css/main.css"/>

我对托管公司的常见问题解答和文档进行了一些研究,发现 Apache DocumentRoot 设置为“/”,这当然是不需要的,因为 CakePHP 要求将其设置为应用程序的网站根文件夹。 问题是,由于这是一个共享托管环境,我无法更改它!

有什么想法吗?

根据文档:

This method of CSS inclusion assumes that the CSS file specified resides inside the /app/webroot/css directory if path doesn’t start with a ‘/’.

作为解决方法,您可以尝试:

<?php $this->Html->css('/css/main.css') ?>

防止cake做假设。

从这里开始:http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html#HtmlHelper::css

好吧,我找到的解决方案就是不使用 Html 辅助方法,例如 link() 和 css(),而使用普通的旧 html 代替。理想情况下可能会编辑 Apache 设置并使 DocumentRoot 指向我应用程序中的 webroot 文件夹,但我的托管公司支持并没有我希望的那样有用。