私は、可能な場合には書き換えを配置するために、あなたのApacheの設定を使用して推薦することから始めましょう。 .htaccessとZend Frameworkアプリケーションの両方を使用するよりもはるかに高速です。
また、あなたのコンテンツが永久に移動されたときに検索エンジンに最適な301のリダイレクトを使用するとします。
あなたのZend Frameworkアプリケーションを使ってこのようにしたい場合や、構造が異なるURLがたくさんある場合は、デフォルトのエラーコントローラに「最後の取り組み」として最適です。その理由は、今のところ存在しない(リダイレクトリストにある)URL /myoldurl
を持っていて、将来自分自身のコントローラ/モジュールとして実装すればコントローラが自動的に引き継ぐからです。 errorAction()
インサイド
あなたのエラーはあなたがリダイレクトを行うためのコードを追加することができます404ブロック内の404または500
ある場合を決定するスイッチがあります。これは完全なコードではありません。必要以上に見て欠落したデータを挿入してください。
// [code omitted]
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// this is the original request string ie: /myoldurl
$pathinfo = $this->_request->getPathInfo();
// decide if pathinfo is in your redirect list
if ($pathinfo is in some list of old urls) {
// and get $newurl from your list
$newurl = something from a list of new urls;
// set redirect code to 301 instead of default 302
$this->_helper->redirector->setCode(301);
$this->_redirect($newurl);
}
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
//[...]
影響を受けるすべてのURLを知っているか知っていますか? – Hannes
はい、私はすべての古いURLのリストを作成する必要があります、そして、彼らはとにかくどこに指しているでしょう。 (それは退屈になるだろう...)// – AngelP