2011-10-23 7 views
1

正しいものに間違ったSEOのリダイレクトURL:今すぐ私は現在、SEOのURLに標準のURLからリダイレクトするには、次の規則を使用

RewriteRule ^books/v/([0-9]+)/(.*)/page([0-9]+) books.php?type=book&id=$1&title=$2&page=$3 [L] 
RewriteRule ^books/c/([0-9]+)/(.*)/page([0-9]+) books.php?type=category&id=$1&title=$2&page=$3 [L] 
RewriteRule ^books/v/([0-9]+)/(.*) books.php?type=book&id=$1&title=$2 [L] 
RewriteRule ^books/c/([0-9]+)/(.*) books.php?type=category&id=$1&title=$2 [L] 
RewriteRule ^books books.php [L]` 

を、私は何をしたいのですが、自動的に正しいIDを持つURLをリダイレクトされ、不適切なタイトルを正しいURLに追加します。

Stackoverflowは同様のことを行います。正しいIDで質問のURLを入力したが、タイトルが間違っていると、自動的に正しいURLにリダイレクトされます。

私はそれがPHPを使用して行う必要がありますが、私は本当にリダイレクトを行う方法を知っていないと思います。

+2

があなたの 'のindex.phpにスクリプトの呼び出しを入れて'ファイルは、最初にインデックスに対して値をチェックし、' header() 'と' die() 'で修正します。他のコンテンツが実行される前に実行されていれば、オーバーヘッドはほとんどありません。 –

答えて

3

PHPはこのようなリダイレクトを行う方法です。

基本的な考え方は単純です:あなたは、PHPスクリプト内

  • 上に表示し、データベースからIDを持つレコードをロードするとIDとタイトル部分と

    • コールPHPスクリプト

    • データベース内のレコードのタイトルと、URLのタイトルと一致します。

    • 一致していない場合、ヘッダはIDと正しいURLにリダイレクトするか、およびデータベースからタイトル:

      header("Location: /books/v/123456"); 
      die(); 
      
  • +0

    最善の方法は、数値IDでの初期クエリ参照を最適化することですが、間に合わずに遅いことが判明した場合に限ります。 –

    +0

    @Jared yeah、十分な公正さ。パフォーマンスが問題であれば良いアイデアですが、間違いなく、これが起こることはめったにないので、最適化されていないアプローチも問題ありません。 –

    +0

    私は実際にこの*答えに同意しましたが、あなたが応答していた文を編集しました。私はあなたが '.htaccess'が明示的にそれを行うことができないことを意味したと思います。 (何か私は最初にOPが尋ねていたと思った。) –

    関連する問題