Reindirizza WordPress in Header
Le plug-in di reindirizzamento costruito per WordPress è un mezzo fantastico per organizzare e gestire i reindirizzamenti. Lo uso su questo sito e ho organizzato i miei gruppi di reindirizzamenti per post aggiornati, link di affiliazione, download, ecc.
Tuttavia, mi sono imbattuto in un problema unico in cui ho impostato un proxy inverso per un client in cui WordPress è in esecuzione su un percorso ... ma non la radice del sito. Il sito principale è in esecuzione su IIS in Azure. IIS può gestire i reindirizzamenti proprio come può fare qualsiasi server Web, ma il problema è che questo client dovrebbe inserire la gestione dei reindirizzamenti nel processo di sviluppo e sono già occupati.
Il problema è che un tipico reindirizzamento in stile .htaccess non è possibile ... dobbiamo effettivamente scrivere i reindirizzamenti in PHP. Come soluzione, instradiamo le richieste a WordPress per identificare se ci sono reindirizzamenti su vecchi percorsi.
Nelle header.php file del nostro tema figlio, abbiamo una funzione:
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;
}
}
Non ci siamo preoccupati di inserire la funzione in functions.php semplicemente perché avrebbe avuto un impatto solo sul file di intestazione. Quindi, all'interno del file header.php, abbiamo semplicemente un elenco di tutti i reindirizzamenti:
my_redirect('lesson_plans', 'lesson-plan');
my_redirect('resources/lesson-plans/26351', 'lesson-plan/tints-and-shades');
my_redirect('about/about', 'about/company/');
Con questa funzione, puoi anche specificare il tipo di reindirizzamento su cui desideri impostare la richiesta di intestazione, l'abbiamo appena impostato su un reindirizzamento 301 in modo che i motori di ricerca lo onorino.