2017-11-29 4 views
0

"common"に "errorAction"を作成します。したがって、ページが存在しないときは、 "common/controllers/ErrorController"のアクション "index"にリダイレクトされます。Yii2:共通のルートを作成する方法

私はこれを持っている:

共通\ main.php

<?php 
return [ 
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 
    'components' => [ 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ], 
     'errorHandler' => [ 
      'errorAction' => 'error/index', 
     ], 
    ], 
]; 

そして、この構造:

common 
- controllers 
- - ErrorController.php 
- views 
- - error 
- - - index.php 

しかし、私が存在する場合でも、それはそこにリダイレクトしますサーバー上の "フロントエンド"フォルダ(メンテナンスのために一時的に存在しない)。

私は拡張子 "Yii2メンテナンスモードコンポーネント"を使用し、 "common"フォルダで作成したビューに正しくリダイレ​​クトします。 問題は、サーバーから「バックエンド」と「フロントエンド」の両方のフォルダを削除した場合、メンテナンスページにリダイレクトされず、Apacheの「404 Not Found」のデフォルトページが表示されることです。

共通\メインlocal.phpファイル

... 
     'maintenanceMode' => [ 
      'class' => 'brussens\maintenance\MaintenanceMode', 
      'layoutPath' => '@common/views/layouts/maintenance', 
      'viewPath' => '@common/views/maintenance/index', 
      'roles' => [ 
       'administrator', 
      ], 
      'urls' => [ 
       'site/login', 
      ], 
     ], 
... 

答えて

1

あなたのドキュメントルートに.htaccessファイルを追加し、これをachiveすることができます。この設定では、404エラーの代わりにフォルダ/ファイルが存在しない場合にcommonページにリダイレクトされています。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . route/to/your/common/handler [L] 
関連する問題