将Zend Framework网站部署到共享主机时,通常无法将DocumentRoot更改为指向网站的公共/文件夹。因此,网站的网址现在为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网站的正确方向?
答案 0 :(得分:5)
您使用的是骨架应用吗?
看起来有点过头了,肯定比这简单得多。
将所有内容从公开移动到根
更改index.php
<?php
/**
* This makes our life easier when dealing with paths. Everything is relative
* to the application root now.
*/
//chdir(dirname(__DIR__));
chdir(__DIR__);
// Setup autoloading
require 'init_autoloader.php';
// Run the application!
Zend\Mvc\Application::init(require 'config/application.config.php')->run();
Simples。
如果您正在运行这样的应用程序,您可能希望阻止使用htaccess等直接访问某些Zend Framework文件夹