将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站点的正确方向吗?
你在使用骨架应用吗?
这看起来有点过头了,肯定比这简单得多.
将一切从公共转移到根
改变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文件夹
| 归档时间: |
|
| 查看次数: |
3811 次 |
| 最近记录: |