2010-12-01 4 views
0

私はリファクタリングを疲弊させてしまったので、再構築しています。Zendフレームワークを使用して古いURLを新しいコントローラ/アクションにリダイレクト/転送する(012ステータスに似ています)

古いURLには何らかの規則を作成するための名前の一貫性はありません。古いURLを転送するようなルーター/コントローラー($ this - > _ forward())を使用することは可能ですか?彼らの新しい場所?

例えば

私はそれがhttp://www.example.com/url/random-nameに転送しますhttp://www.example.com/this-is-a-url-with-a-random-name.phpを呼んでいる...

キーは古いURLとなり、値が新しい場所になるので、たぶん、この試合は、アレイ内に存在するだろうか?

私は車輪を再発明しようとしています.301のリダイレクトを持つ良いol '.htaccessのルールに固執すべきですか?

(私はこのすべてが理にかなって?願っています)

乾杯、 エンジェル

+0

影響を受けるすべてのURLを知っているか知っていますか? – Hannes

+0

はい、私はすべての古いURLのリストを作成する必要があります、そして、彼らはとにかくどこに指しているでしょう。 (それは退屈になるだろう...)// – AngelP

答えて

1

私は、可能な場合には書き換えを配置するために、あなたの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; 
//[...] 
+0

こんにちは、これに感謝し、私が以前にあなたに戻らなかったことを謝ります。私は、私はそれが少し保守性/多用途になるだろうと思うので、私はhtaccessの代わりにZFソリューションを実装しようと思うと思います。詳細なログをとる機会があります。に! – AngelP

関連する問題