1

重複の可能性:
リファラーが301リダイレクトであるかどうかを識別する方法

htaccess Imを使用して301リダイレクトを実行し、古いURLを新しいURLにリダイレクトします。問題は、URLにデータベースに保存されているIDが含まれていることです。しかし、新しいIDを持つ新しいデータベースがあるので、古いURLが新しいURLにリダイレクトされると、別のレコードがページに読み込まれます。つまり、古いIDを新しいIDと一緒に保存して、どの古いIDが新しいIDに属しているかを確認しました。ただし、誰かが古いURLにアクセスしようとしていることをどのように検出できますか?ページにアクセスする人が301経由でリダイレクトされていることを検出する方法はPHPにありますか?SEOの理由でURLに新しいものを追加したくないので、301リダイレクトを介してこのページにアクセスしたかどうかを検出できるかどうかを本当に知る必要があります。これが理にかなっていることを願っています。

4

4 に答える 4

2

リダイレクトに別のパラメータを追加し、パラメータをredirect=trueチェックしてアプリにリダイレクトであることを知らせ、セッションを開始してから、変更されていない最後のURLに再度リダイレクトし、セッションを比較して、ユーザーがリダイレクトされたURLから来たことを確認します。

または、Salmanの言うことを実行し、正規URLを使用します。

于 2012-12-08T19:54:38.307 に答える
0

phpと書き直しを介してすべての古いURLを処理し、コードを新しいIDの新しいURLに直接301リダイレクトさせてみませんか?

于 2012-12-09T00:49:30.490 に答える
0

スクリプトは、何かがそれにリダイレクトされたかどうかを知りません。にリダイレクトする代わりにindex.php?id=12345、適切なURLを決定できる中間リダイレクトを追加します。

まず、一時変数名を使用して.htaccessにリダイレクトします。たとえばindex.php?oldid=12345、そのスクリプトで次のようにします。

if (isset($_POST['oldid'])) {
    $id = fetch_new_id();
    header("Location: index.php?id=$id");
}
于 2012-12-08T19:51:38.727 に答える
0

設定されたhttpステータスを検出できないと思いますが、.htaccessを使用すると、リダイレクトされたURLに変数を追加したり、idの名前を別の変数名に変更したりできます。

于 2012-12-08T19:53:13.130 に答える