将ZF2站点部署到共享主机

Mik*_*lly 1 zend-framework2

将Zend Framework网站部署到共享主机时,通常无法将DocumentRoot更改为指向网站的公共/文件夹.因此,该网站的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']);
    }
}
Run Code Online (Sandbox Code Playgroud)

base_url键在modules/Application/configs/module.config.php中设置:

'base_url' => '/public'

我能够转储路由器对象并确认在此阶段正确设置了base_url.不幸的是,现在http://www.example.com不再打开索引页面并给出404路由错误.

有人能够告诉我我做错了什么或者指出我在共享托管环境中运行ZF2站点的正确方向吗?

And*_*rew 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();
Run Code Online (Sandbox Code Playgroud)

Simples.

如果您正在运行这样的应用程序,您可能希望阻止使用htaccess等直接访问某些Zend Framework文件夹