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 サイトを実行するために、私が間違っていることを教えてくれたり、正しい方向に向けてくれる人はいますか?