Rediriger WordPress dans l'en-tête
La plugin de redirection construit pour WordPress est un moyen fantastique d'organiser et de gérer les redirections. Je l'utilise sur ce site et j'ai organisé mes groupes de redirections pour les articles mis à jour, les liens d'affiliation, les téléchargements, etc.
Cependant, j'ai rencontré un problème unique où j'ai un proxy inverse configuré pour un client où WordPress s'exécute sur un chemin… mais pas à la racine du site. Le site principal s'exécute sur IIS dans Azure. IIS peut gérer les redirections comme n'importe quel serveur Web, mais le problème est que ce client devrait intégrer la gestion des redirections dans son processus de développement - et il est déjà occupé.
Le problème est qu'une redirection de style .htaccess typique n'est pas une possibilité… nous devons en fait écrire les redirections en PHP. En guise de solution, nous acheminons les requêtes vers WordPress pour identifier s'il y a des redirections sur les anciens chemins.
au sein de la header.php fichier de notre thème enfant, nous avons une fonction:
function my_redirect ($oldlink, $newlink, $redirecttype = 301) {
$olduri = $_SERVER['REQUEST_URI'];
if(strpos($olduri, $oldlink) !== false) {
$newuri = str_replace($oldlink, $newlink, $olduri);
wp_redirect( $newuri, $redirecttype );
exit;
}
}
Nous n'avons pas pris la peine de mettre la fonction dans functions.php simplement parce que cela n'affecterait que le fichier d'en-tête. Ensuite, dans le fichier header.php, nous avons simplement une liste de toutes les redirections:
my_redirect('lesson_plans', 'lesson-plan');
my_redirect('resources/lesson-plans/26351', 'lesson-plan/tints-and-shades');
my_redirect('about/about', 'about/company/');
Avec cette fonction, vous pouvez également spécifier le type de redirection sur lequel vous souhaitez définir la demande d'en-tête, nous venons de le définir par défaut sur une redirection 301 afin que les moteurs de recherche l'honorent.