2017-04-18 3 views
0

基本的には、スタックオーバーフローが発生します。入力URLを知らずに正しいURLにリダイレクトする方法

古いURLがあるのであれば:/product-old-url_152し、それが/product-new-url_152に変化し、その後、次のURLは、すべてここにリダイレクトします:

/product-old-url_152

/product-some-other-url_152

は両方にリダイレクトします

/product-new-url_152

この?

編集152は、データベース内の投稿のIDです。これを行うには

答えて

2

一つの方法:

、要求されたURL

if (preg_match('/product-(.*)_(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) { 
    $old = $matches[1]; 
    $id = $matches[2]; 

データベース

$slug = fetch_slug_from_database($id); 

で新しいURLを検索し、クライアントへのリダイレクトを送るからIDを抽出URLが変更された場合

if ($slug !== $old) { 
     header("Location: /product-$slug-$id"); 
     exit; 
    } 
} 
+0

また、あなたが新しいURLにまだ載っていないというチェックを追加することを忘れないでください。そうしないと、ループに陥るでしょう。 – iainn

+0

@iainnスポッティングしてくれてありがとう、修正済み。 –

+0

@OlafDietscheありがとうございます。間違いなく実装を見ていきます。 –

関連する問題