wordpressサイトで機能を作成しました。
機能の目的は次のとおりです。
1)投稿が見つからない場合は、投稿のアーカイブにリダイレクトします。
かなり簡単なはずですよね?
まあ-あらゆる種類のツールによると、そうではありません。
この関数を作成することから始めます。
function check_database_for_existance() {
if (is_main_query() && is_404() && !is_archive()){
//Do all sorts of magic here to find the correct link.
$redirectLink = "found-by-wp_magical-conditions";
header("HTTP/1.1 301 Moved Permanently"); //Or temporery, doesn't matter - doesn't work
header("Location: ".$redirectLink);
}
}
add_action('pre_get_posts', 'check_database_for_existance');
今..私がテストのために持っているすべてのツールは、それが基本的に素晴らしく動作することを示唆します。ToolbotからPlayStation3まですべてがリダイレクトをうまく理解します。
しかし、Googlebot(およびその他の検索ボット)はそれを受け入れることを拒否し、依然として404ページが表示されます。
pre_get_post
フックを使用する必要があります-投稿が存在するかどうかを確認する必要があるので、正しいですか?
グーグルにリダイレクトを強制する方法はありますか?
プロセスの後半にリダイレクトしていますか?
Googlebotsの結果に関するドキュメントは、あまりよく文書化されていません。
私はテストしました: http://www.redirect-checker.org/index.php とScreamingFrogプログラムを使用して
私はここでロープにいます-単にGoogleがリダイレクトに従わない理由を理解することはできません。
ヘッダーを呼び出した後、exit
またはdie
にする必要があります。そうしないと、スクリプトは通常どおり続行され、結果が表示される理由が説明されます。
function check_database_for_existance() {
if (is_main_query() && is_404() && !is_archive()){
//Do all sorts of magic here to find the correct link.
$redirectLink = "found-by-wp_magical-conditions";
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$redirectLink);
die; // we are done here, nothing more to do
}
}