0

望ましいシナリオ:

訪問者が通常404エラーを返すURLに到達すると、スクリプトは最初に、そのページに関連するコンテンツを提供する既存のページがあるかどうかを自動的に検出し、訪問者を404ページから一致する関連URLにリダイレクトします(それ以外の場合は404のURLのテキストに基づいた自動「I'mfeelinglucky」検索)。

既存のページが関連性があると見なされない場合、「スマート404」システムはユーザーを404ページに配信します。

4

2 に答える 2

2

次のスクリプトを使用できます:http://bobpeers.com/technical/404_redirection

<?php 
$request=$_SERVER['REQUEST_URI'];

$arrMoved=array("/path/oldname.php"=>"/path/newname.php",
            "/old_path/oldname.php"=>"/new_path/newname.php");

if(array_key_exists($request,$arrMoved))
    {
    $newplace="http://".$_SERVER['HTTP_HOST'].$arrMoved[$request];
    header("HTTP/1.0 301 Moved Permanently");
    header("Location: $newplace");
    header("Connection: close");
    exit();
    }
else
    {
    header("HTTP/1.0 404 Not Found");
    }

?>

<!-- 
Your normal HTML code goes here since if a match is found the visitor will have been redirected. Only genuine 404 errors will see the HTML below.
 -->

<html>
  <head>
    <title>404 Error page</title>
  </head>
  <body>
    <p>Sorry but this page isn't here.</p>
  </body>
</html>
于 2012-05-07T17:19:54.247 に答える
1

MultiViewsにチェックインすることをお勧めします。ApacheのMultiViewsを使用すると、URLを引数として処理できます。これは、WordPress、Drupal、およびその他のフレームワークが着信URLを処理する方法です。

理解に役立つApacheドキュメントのテキストを次に示します。

MultiViews検索はMultiViewsオプションによって有効になります。サーバーが/some/ dir / fooの要求を受信し、/ some / dir / fooが存在しない場合、サーバーはディレクトリを読み取り、fooという名前のすべてのファイルを探します。これらすべてのファイルに名前を付けるタイプマップを効果的に偽造し、クライアントがファイルの1つを名前で要求した場合と同じメディアタイプとコンテンツエンコーディングを割り当て、クライアントの要件に最適なものを選択して、そのドキュメント。

これが他のフレームワークで機能する方法は、/ some / dir / foo / other/parametersによって「foo.php」が処理されることです。foo.phpには、すべての着信リクエストを処理するためのカスタムコードを含めることができます。これには、派手な404、SEO用のより優れたURLなどが含まれます。

于 2012-05-07T17:22:34.220 に答える