1

PHP5 / Zend Framework1.8.1のWebサイトがあります。次の場所にあります。

http://www.example.com/foo

腹立たしいことに、グーグルのインデックスによってまだ維持されているこのサイトの古いバージョンは、次の場所にありました。

http://www.example.com/foo/DEFAULT.ASP

そのため、多くの人が上記のリンクを要求し、行き止まりになっています。

これを修正する方法は、301リダイレクトを発行して、彼を新しいサイトに誘導することだと思います。頭に浮かぶこれを行う2つの方法は次のとおりです。

  1. 私が最初に考えた方法は、.htaccessに書き換えルールを追加することでした。私たちのサイトの実装はPHP5/Zend Framework 1.8.1であるため、.htaccessには(Zend Framework MVC要件に従って)既存の書き換えルールがあります。

    RewriteRule !\.(js|ico|gif|jpg|png|css|jpeg)$ index.php
    

    mod_rewrite noobとして、私は少しグーグルして、リダイレクトを処理するために次のことを思いつきました。

    RewriteCond %{HTTP_HOST} ^/foo/DEFAULT.ASP
    RewriteRule (.*) http://example.com/foo$1 [R=301,L]
    

    これらの行を.htaccessに追加しましたが、機能しません。

  2. 私が考えた2番目の方法はZend_Router_Route_Static、次のように使用することです。

    $router = $frontController->getRouter();
    $route = new Zend_Controller_Router_Route_Static('foo/DEFAULT.ASP', array('controller' => 'foo', 'action' => 'index'));
    $router->addRoute('foo', $route);
    

    これは正しいページにリダイレクトされますが、301ヘッダーを設定する方法もわかりません。さらに、これらのコード行を自分のコードに含めるのは非常にエレガントではありません。bootstrap.php

誰かがこの状況に対処する方法について何かアドバイスを提供できますか?私はすべてまたはいずれかを知りたいです:

  1. 書き換えルールを機能させる方法
  2. Zend_Controller_Router_Route可能であれば「301」を使用する方法 。
  3. 私が行方不明になっている別の方法はありますか?
  4. どちらがより良い方法であり、その理由は何ですか?
  5. なぜグーグルはこれを理解しないのですか?半年近く経ちました。
4

4 に答える 4

2

これは機能するはずです(Zendルールの前に配置してください):

RewriteRule ^foo/DEFAULT.ASP /foo [R=301,L]

Googleがそれを理解していない理由がわかりません-適切な404ステータスコードを提供していると確信していますか?ヘッダーを確認することで確認できます。FirefoxではLiveHTTPヘッダーを使用しています。

于 2009-05-27T08:52:30.680 に答える
2

私は最近、追加することによって同様の問題を解決しました

AddType application/x-httpd-php .asp

.htaccessファイルに追加します。これにより、サーバーはphpで.aspファイルを実行します。

次に、ヘッダー('場所:/'など)を含むファイルdefault.aspを作成して、Googleが探していたものを置き換えました。リダイレクトする前に新しいURLに変換する必要がある複雑なパラメーターを持つ他の.aspファイルがいくつかあり、場合によってはデータベースルックアップが必要だったので、PHPですべてを記述できるので、他の部分のインクルードファイルを使用できるので便利でした。プロジェクトの。

于 2009-06-04T21:05:58.183 に答える
1
Redirect permanent /foo/DEFAULT.ASP /foo
于 2009-05-27T08:56:24.667 に答える
1

あなたはあなたの問題を解決したようです、そしてこれはあなたの問題の良い解決策ではないでしょう、しかしここに彼らがあなたの質問によってこのスレッドに引き付けられたなら他の人が役に立つと思うかもしれない別のリソースがあります:

http://www.refreshinglyblue.com/2008/10/28/zend-framework-redirect-the-easy-way/

彼は、内部URLをリダイレクトするための「RedirectorZendControllerActionHelper」を提案しています。

PS誰かが_redirectを使用する場合は、デフォルトで302になっているので、必ず301リダイレクトコードを渡してください(それが必要な場合)。

于 2009-06-09T05:02:48.297 に答える