当您将 Zend Framework 网站部署到共享主机时,通常无法将 DocumentRoot 更改为指向网站的 public/ 文件夹。因此,该网站的 URL 现在是http://www.example.com/public/。这看起来不太专业,所以我想删除它。到目前为止,我一直在使用 ZF1,Rob Allen 在他的博客http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/上提供了一种方法。我试图为 ZF2 修改这个。他建议在根目录中放置一个 index.php 文件,其中包含以下内容:
include 'public/index.php';
完成此操作后,http://www.example.com可以正常打开索引页面,但 CSS 链接已损坏。Rob 添加了一个控制器插件来将 baseUrl 重置为 /public 以处理面向公众的 CSS 和图像文件等。为此,我在 ZF2 中找到了来自 Matthew Weier O' Phinney http://zend-framework-community.634137 的项目。 n4.nabble.com/Setting-the-base-url-in-ZF2-MVC-td3946284.html他描述了如何设置baseUrl。根据他的代码,我将其添加到 modules/Application/Module.php
class Module {
public function onBootstrap(MvcEvent $e) {
$config = $e->getApplication()->getServiceManager()->get('config');
$router = $e->getApplication()->getServiceManager()->get('router');
$router->setBaseUrl($config['base_url']);
}
}
base_url 键在 modules/Application/configs/module.config.php 中设置:
'base_url' => '/public'
我能够转储路由器对象并确认在此阶段正确设置了 base_url。不幸的是,现在http://www.example.com不再打开索引页面并给出 404 路由错误。
有没有人能告诉我我做错了什么或指出我在共享托管环境中运行 ZF2 站点的正确方向?