Implementando la redirección global (redireccionamiento automático para todas las páginas a las que se les cambió el slug)

3

Digamos que tienes 20 o incluso 50 páginas que necesitan cambios de enlace permanente. ¿Cómo se puede garantizar una formación de redireccionamiento automático para todos ellos después?

En Drupal , por ejemplo, uno podría instalar el módulo "Redireccionamiento global" que crea redirecciones automáticamente cuando los enlaces permanentes (Alias en Drupalese) se cambian.

¿Es incluso necesario en WordPress?

    
pregunta JohnDoea 26.02.2016 - 08:58

3 respuestas

7
  

Digamos que tienes 20 o incluso 50 páginas que necesitan cambios de enlace permanente. Como puede   Garantizas una formación de redireccionamiento automático para todos.   después?

La parte de una URL de publicación que se puede editar en WordPress se denomina "slug". Para una URL como enlace , la parte "abc-xyz" sería la babosa. La barra se forma inicialmente a partir del título de la publicación, y puede editarse más tarde si se desea.

Ahora, cuando cambias el slug de una publicación antes de que se publique, entonces obviamente no hay ninguna diferencia. Cuando cambia la bala de una publicación que ya se ha publicado, WordPress guarda esa bala antigua como datos "postmeta", utilizando una clave llamada "_wp_old_slug". Lo hace para cualquier número de babosas viejas. Si lo cambias tres veces, entonces tienes tres babosas antiguas guardadas para esa publicación.

Al seguir una URL antigua, el slug antiguo que se está utilizando no coincidirá con el actual, porque se ha cambiado. Por lo tanto, la consulta principal de la publicación no encontrará la nueva publicación. Por lo tanto, WordPress tiene una función para manejar esto para las babosas viejas.

Durante la secuencia de inicio, la función wp_old_slug_redirect() es llamada por la acción template_redirect . Si la consulta normal fue exitosa, entonces la función regresa y no hace nada. Sin embargo, si la consulta no tuvo éxito, y se proporcionó un slug en la URL, entonces esta función realiza una búsqueda del postmeta en busca de una coincidencia entre esos antiguos valores de slug. Si encuentra una coincidencia, obtiene la nueva URL correcta (enlace permanente) para esa publicación y envía un redireccionamiento 301 para ella.

Entonces, respuesta corta a su pregunta: WordPress maneja este caso automáticamente. Construido a la derecha.

Para referencia, esta funcionalidad se agregó a WordPress en la versión 2.1.

    
respondido por el Otto 09.03.2016 - 12:47
2

La forma más sencilla es ir a tu htaccess y usar para las 20 páginas.

Redirect 301 / oldpage enlace

    
respondido por el Jorin van Vilsteren 26.02.2016 - 10:31
1

NOTA: no me concedas la recompensa, dale Jorin, usar Redirect 301s en htaccess suele ser la forma más fácil de conseguir un caso de uso único como el tuyo .

Puedes hacerlo de varias maneras ...

Usando htaccess (recomendado)

Redirect 301 /old-permalink http://example.com/new-permalink

o utilizando una declaración RewriteRule si tiene rutas comunes de enlace permanente

RewriteEngine On
RewriteRule ^some-common-path/(.*)/$ /new-common-path/$1 [L,R=301]

Usando un complemento:

(ambos son bastante buenos para lo que son)

Manejando esto con la lógica de PHP de una manera sucia:

function maybe_redirect_request() {

    $redirects = array(

        'old-permalink' => 'new-permalink',
        'old-permalink/page/2' => 'new-permalink/page/2',
        //etc...

    );

    $request_uri = !empty($_SERVER['REQUEST_URI']) ? trim($_SERVER['REQUEST_URI'], '/\') : '';

    if ( $request_uri && array_key_exists($request_uri, $redirects) ) {

        wp_redirect( home_url($redirects[$request_uri]), 301 ); 
        exit;

    }

}

add_action('init', 'maybe_redirect_request'); //or perhaps the "request" filter
    
respondido por el userabuser 09.03.2016 - 08:36

Lea otras preguntas en las etiquetas