Redirigir WordPress en el encabezado

Redirección de encabezado de WordPress

El complemento de redirección construido para WordPress es un medio fantástico para organizar y administrar redireccionamientos. Lo uso en este sitio y he organizado mis grupos de redireccionamientos para publicaciones actualizadas, enlaces de afiliados, descargas, etc.

Sin embargo, me encontré con un problema único en el que tengo un proxy inverso configurado para un cliente donde WordPress se ejecuta en una ruta ... pero no en la raíz del sitio. El sitio principal se ejecuta en IIS en Azure. IIS puede administrar las redirecciones como cualquier servidor web, pero el problema es que este cliente necesitaría poner la administración de las redirecciones en su proceso de desarrollo, y ya están ocupados.

El problema es que un redireccionamiento al estilo .htaccess típico no es una posibilidad ... tenemos que escribir los redireccionamientos en PHP. Como solución, enrutamos las solicitudes a WordPress para identificar si hay redirecciones en rutas antiguas.

Dentro del header.php archivo de nuestro tema hijo, tenemos una función:

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;
	}
}

No nos molestamos en poner la función en functions.php simplemente porque solo afectaría el archivo de encabezado. Luego, dentro del archivo header.php, simplemente tenemos una lista de todas las redirecciones:

my_redirect('lesson_plans', 'lesson-plan');
my_redirect('resources/lesson-plans/26351', 'lesson-plan/tints-and-shades');
my_redirect('about/about', 'about/company/');

Con esa función, también puede especificar en qué tipo de redireccionamiento le gustaría configurar la solicitud de encabezado, simplemente lo hemos predeterminado en un redireccionamiento 301 para que los motores de búsqueda lo respeten.