Redirecciones basadas en fechas para posts que ya no existen
31 ene 2011, 19:37:14
Vistas: 337
Votos: 0
Quiero una forma más elegante de expresar la siguiente redirección:
RewriteCond %{REQUEST_URI} ^/blog/2008/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/01/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/02/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/03/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/04/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/05/(.*) [NC, OR]
RewriteCond %{REQUEST_URI} ^/blog/2009/06(.*) [NC]
RewriteRule . http://example.com/blog/? [R=301,L]
Idealmente, me gustaría usar wp_safe_redirect
o wp_redirect
. El problema con esto, sin embargo, es que esas páginas ya han sido eliminadas desde WP.
¿Es posible hacer esto internamente, si los posts han sido eliminados completamente de la base de datos?

Dan Gayle
6.15K
Todas las respuestas a la pregunta
1
1
No hay problema que las publicaciones ya no estén, nos conectaremos a WP antes de que consulte la base de datos. Primero configuramos nuestras reglas de reescritura, que establecerán una variable de consulta especial (que debemos declarar como pública), y luego, en la acción parse_request
, verificamos esa variable y redirigimos si está establecida.
add_action( 'init', 'wpse8236_init' );
function wpse8236_init()
{
// Esto distingue entre mayúsculas y minúsculas, no podemos establecer flags de regex
// Reemplazar `blog` con `[Bb][Ll][Oo][Gg]` para hacerlo insensible a mayúsculas/minúsculas
add_rewrite_rule( 'blog/2008/', 'index.php?wpse8236_redirect=true', 'top' );
add_rewrite_rule( 'blog/2009/0[1-6]/', 'index.php?wpse8236_redirect=true', 'top' );
}
add_action( 'query_vars', 'wpse8236_query_vars' );
function wpse8236_query_vars( $query_vars )
{
$query_vars[] = 'wpse8236_redirect';
return $query_vars;
}
add_action( 'parse_request', 'wpse8236_parse_request' );
function wpse8236_parse_request( &$wp )
{
if ( array_key_exists( 'wpse8236_redirect', $wp->query_vars ) ) {
wp_redirect( '/blog/' );
exit();
}

Jan Fabry
30.5K
9 feb 2011 14:17:30
Preguntas relacionadas
1
respuestas
1
respuestas