2013-03-06 66 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

相關問題