パスが変更される前にディレクトリ構造内の同じ名前のページにリダイレクトする

さて、私は自分のWebに多数のhtmlページがあると言います。場合によってはディレクトリ構造内で時々変更が行われるため、誰かが確定したURLにアクセスしようとすると、そのようなURLが終了しない可能性があります。ファイル名は変更されませんが、パスも変更されます。

今のところ、サーバーはユーザーをカスタマイズ可能な「404」ページに移動します。この方法でページをカスタマイズすることはできますか?

  1. ユーザーはoneweb.com/oldpath/page.htmlを試します。存在しない
  2. 404のカスタマイズされたページが起動します
  3. 404ページでスクリプトが実行されますか?
  4. このスクリプトには、その名前が格納されているファイルの名前が与えられていますか?
  5. スクリプトはディレクトリ構造全体を検索してpage.htmlを検索します
  6. ファイルが見つかり、新しいURLが保存されている:oneweb.com/newpath/page.html
  7. 新しいURLを示すリンクが表示されます

たぶん、このプロセスは比較的一般的で、関連するコードやチュートリアルを見つけることができますか?

ベストアンサー

あなたはApacheを使用していますか? Linux?

404ハンドラを追加する

ErrorDocument 404 /404.php

404.phpを使ってurlを解析します。この単純な例では、最後の/ URIの後ろのすべてを取得するだけです。したがって、
http://example.com/foo /bar/page.html はpage.htmlを$
urlに入れます:

$url = end(explode('/', $_SERVER['REQUEST_URI']));

次に、 http://php.net/manual/en/のコメントの例の関数の1つを使用します。
function.readdir.php
を使用してディレクトリを検索し、ファイルを探します。

次に、ヘッダ301をリダイレクトします

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: http://example.com/' . $file_path);

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です