Redirecționați WordPress în antet
plugin de redirecționare construit pentru WordPress este un mijloc fantastic de organizare și gestionare a redirecționărilor. Îl folosesc pe acest site și mi-am organizat grupurile de redirecționări pentru postări actualizate, linkuri afiliate, descărcări etc.
Cu toate acestea, am întâmpinat o problemă unică în care am configurat un proxy invers pentru un client în care WordPress rulează pe o cale ... dar nu rădăcina site-ului. Site-ul principal rulează pe IIS în Azure. IIS poate gestiona redirecționările la fel ca orice server web, dar problema este că acest client ar trebui să pună gestionarea redirecționărilor în procesul lor de dezvoltare - și sunt deja ocupați.
Problema este că o redirecționare tipică .htaccess nu este o posibilitate ... trebuie să scriem redirecționările în PHP. Ca soluție, redirecționăm solicitările către WordPress pentru a identifica dacă există redirecționări pe căile vechi.
În cadrul header.php fișierul temei copilului nostru, avem o funcție:
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;
}
}
Nu ne-am deranjat să introducem funcția în functions.php pur și simplu pentru că ar avea impact doar asupra fișierului antet. Apoi, în fișierul header.php, avem pur și simplu o listă cu toate redirecționările:
my_redirect('lesson_plans', 'lesson-plan');
my_redirect('resources/lesson-plans/26351', 'lesson-plan/tints-and-shades');
my_redirect('about/about', 'about/company/');
Cu această funcție, puteți specifica, de asemenea, la ce tip de redirecționare doriți să setați cererea de antet, tocmai l-am implicit la o redirecționare 301, astfel încât motoarele de căutare să o respecte.