J'ai créé une fonction sur un site wordpress.
Le but des fonctions est le suivant.
1) si le message n’est pas trouvé, redirigez-le vers l’archive du message.
Devrait être assez facile non?
Eh bien, selon toutes sortes d’outils, ce n’est pas le cas.
Je commence par créer cette fonction:
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');
Maintenant .. Tous les outils dont je dispose pour tester, suggèrent que cela fonctionne fondamentalement à merveille, tout, de Toolbot à PlayStation3, comprend très bien les redirections.
Mais Googlebot (et d'autres moteurs de recherche) refuse de l'accepter et continue de voir la page 404.
Je dois utiliser le crochet pre_get_post
- car je dois savoir si les messages existent, non?
Existe-t-il un moyen de forcer Google à suivre la redirection?
Est-ce que je redirige trop tard dans le processus?
La documentation sur les résultats de Googlebots n'est pas très bien documentée, OMI.
J'ai testé sur: http://www.redirect-checker.org/index.php et en utilisant le programme ScreamingFrog
Je ne suis pas à la hauteur, je ne comprends tout simplement pas pourquoi Google ne suivra pas les redirections.
Après avoir appelé votre en-tête, vous devez utiliser exit
ou die
. Si vous ne le faites pas, le script continue comme d'habitude, ce qui explique probablement pourquoi vous voyez les résultats que vous êtes.
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
}
}