私はすべてのURLをyiiの単一のURLに転送する方法を知る必要がありますすべてのリンクは単一のURLに移動しますメンテナンスメッセージを表示するためにこれが必要です
2 に答える
アップデート
Yii 1.1.16以降、古いコードサンプルは機能しなくなりました。新しいソリューションを提供してくれたJamesG(コメントを参照)に感謝します。コードサンプルが更新されました。
すでに理解しているcatchAllRequest
ように、yii内からこれを行うための最良の方法です。ドキュメントから明らかなように、このような場合のために特別に作成されています。それを使用すると、おそらくわずかなパフォーマンスの向上(以上urlManager
)が得られる可能性がありますが、それが目立つとは思えません。
一方、を使用したい場合はurlManager
、で試すことができます(コードサンプルのコメントも読んでください):
バージョン1.1.16以降:
'<url:(.*)>'=>'maintenance/index'
バージョン1.1.15以下:
'<url:(.*)>'=>'maintenance/index' // '(.*)'=>'maintenance/index' // this used to work in previous versions ... // of Yii (below 1.1.16) mainly due to a bug, see notes
注:これは、urlManagerのrules
アレイ構成の最初のルールである必要があります。
ただし、sl4mmerですでに説明したように、これを行うにはhtaccessまたはサーバー構成が最適です。サーバーは結局、要求をphpに送信する前に最初にキャッチするためです。
バグに関する注意:ここでgithubの問題を確認してください。
最後に2つのオプションがあります。
.htaccess
書き換えルールを使用するurlManager
任意のURLに一致するパターンでYiiのルールを使用します。
最初のオプションをお勧めします。これは、サーバー自体によって処理されるため、YiiやPHPにも影響を与えないため、パフォーマンスが向上し、セキュリティ違反の可能性から保護されます。