1

Zend Framework Web サイトを共有ホストにデプロイする場合、通常、Web サイトの public/ フォルダーを指すように DocumentRoot を変更することはできません。その結果、Web サイトへの 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']);
    }
}

base_url キーは modules/Application/configs/module.config.php に設定されています:

'base_url' => '/public'

ルーター オブジェクトをダンプし、base_url がこの段階で正しく設定されていることを確認できました。残念ながら、現在http://www.example.comはインデックス ページを開かなくなり、404 ルーティング エラーが発生します。

共有ホスト環境で ZF2 サイトを実行するために、私が間違っていることを教えてくれたり、正しい方向に向けてくれる人はいますか?

4

1 に答える 1

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();

シンプル。

このようなアプリケーションを実行している場合は、htaccessなどを使用して一部のZendFrameworkフォルダーへの直接アクセスをブロックすることをお勧めします。

于 2013-03-06T15:18:58.923 に答える