2013-03-06 65 views
1

将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文件根与线:将ZF2站点部署到共享主机

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。根据他的代码,我已将此添加模块/应用/ 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键被设置在模块/应用/ CONFIGS/module.config.php:

'base_url' => '/public'

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

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

回答

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等

+0

是我使用的应用程序框架Zend框架文件夹直接访问的应用程序。我有很多ZF1网站,这是托管的方式,所以我认为这不会是ZF2的问题。我想我失去了公共目录有点不舒服,但我无法真正说出原因。 – 2013-03-06 18:07:57

+0

这是最简单的方法,如果你不能将ZF移出文档根目录 – Andrew 2013-03-06 19:09:16

+0

你没有权限访问上面的文件夹,通常甚至是共享主机,你可以通过public_html或包含所有网页的htdocs访问下面的级别可见的文件..如果是这样,那么甚至更好,你可以将所有的ZF文件移动到低于 – Andrew 2013-03-06 19:09:58

相关问题