2011-11-13 20 views
0

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

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

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

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

答えて

1

Apacheを使用していますか? Linux?

は、URLを解析するために404.php使用すると404ハンドラ

ErrorDocument 404 /404.php 

を追加します。

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

その後、あなたのディレクトリを検索し、ファイルを見つけることがhttp://php.net/manual/en/function.readdir.phpにコメント例機能のいずれかを使用します。この単純な例では、ちょうどそうhttp://example.com/foo/bar/page.htmlは$のURLでpage.htmlを置くURIで/最後の後に、すべてをつかみます。あなたは私を入れて

そして、良い点笑301は

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

をリダイレクトヘッダを行う...私も、彼はネット以外のものを使用していたかどうか尋ねると思いdidntのとIIS :) –

+0

グレート...方法で。私はphp.netを知らなかった。私には非常に良い見えます。私はApacheを使用していますが、すでに無料のホスティングサーバーにマウントされています。 – eli

関連する問題