Redirigir todo el sitio web a una sola página

20 dic 2012, 23:30:14
Vistas: 22.4K
Votos: 11

Necesito redirigir todo un sitio WordPress a una sola página de WordPress. Una especie de modo de mantenimiento, pero la redirección tiene que ir a una página WordPress publicada. Desafortunadamente, la página de mantenimiento que necesito mostrar tiene que usar otros plugins de WordPress.

No conozco ningún plugin de Modo de Mantenimiento que permita hacer esto. Como máximo, te permiten escribir código HTML/CSS personalizado.

Estaba pensando en una regla mod_rewrite en .htaccess. Sin embargo, tengo muy poco conocimiento con mod_rewrite.

Primero, desactivé las redirecciones canónicas.

Luego, intenté usar:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

Sin embargo, estas reglas generan bucles de redirección. page_id=813 es el ID de mi página de mantenimiento, por supuesto.

¿Alguien conoce algún plugin de modo de mantenimiento que redirija a una página publicada?

Alternativamente, ¿puede alguien ayudarme a corregir las reglas de mod_rewrite? Puntos extra si podemos dejar /wp-admin fuera de las reglas de redirección.

0
Todas las respuestas a la pregunta 3
2
16

Puedes hacer esto directamente desde WordPress, en lugar de necesitar una solución confusa y sobrecomplicada con .htaccess.

Podemos engancharnos al filtro template_redirect, que solo se ejecuta en el front-end (no en wp-admin). Luego usamos la función is_page() para verificar si estamos viendo una página con el ID 813. Si no es así, redirigimos a esa página usando la función wp_redirect().

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

Esto funcionará perfectamente para un modo de mantenimiento, ya que la redirección se realiza con el encabezado HTTP 302 'temporal', lo que indica a los bots y motores de búsqueda que tu sitio estará disponible pronto. Sin embargo, si estás moviendo el sitio de forma permanente, es posible que desees utilizar un encabezado HTTP 301 'permanente' para la redirección. Puedes hacer esto añadiendo un segundo parámetro a la función wp_redirect. Ejemplo:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );
21 dic 2012 01:12:10
Comentarios

Esto funciona muy bien para mi propósito también. Excepto que con un giro: el sitio está "caído" para siempre y quiero mantener WordPress funcionando mostrando la página de despedida como la página de inicio. ¿Hay alguna manera de agregar un encabezado 301 a este tipo de redirección para SEO?

Tapefreak Tapefreak
24 may 2013 04:42:14

@Tapefreak Puedes configurar el encabezado HTTP como segundo parámetro de la función wp_redirect. Ejemplo: wp_redirect( home_url( 'index.php?page_id=183' ), 301 );

shea shea
24 may 2013 06:30:39
0

He incorporado la respuesta aceptada de @shea en un plugin de un solo archivo y he añadido dos opciones: redirigir solo a usuarios no administradores y redirigir a una URL arbitraria.

Si estás interesado, no dudes en descargar el plugin desde Github => https://github.com/Idearia/wp-redirect-website-to-url.

Opciones

Las opciones del plugin son muy simples; por ahora están codificadas directamente en el archivo del plugin, pero podría considerar crear una página de opciones si hay demanda:

  • DESTINATION_URL: La URL completa a la que redirigir a los usuarios; puede ser una página fuera del dominio del sitio web.
  • DESTINATION_URL_ID: Si la URL de redirección es una página o entrada de WordPress, especifica aquí su ID de WordPress.
  • USER_CAPABILITY: Los usuarios con esta capacidad no serán redirigidos; déjalo en blanco para redirigir a todos; por defecto es 'manage_options' que está activado para usuarios administradores.
  • REDIRECT_STATUS_CODE: Estado de la redirección: 302 para redirección temporal, 301 para redirección permanente.
  • DEBUG: Si se debe imprimir información de depuración en debug.log.

Información actualizada en la página de Github => https://github.com/Idearia/wp-redirect-website-to-url.

Ten en cuenta que el plugin es muy básico; usuarios más avanzados podrían considerar en su lugar uno de los muchos plugins de mantenimiento disponibles en el repositorio de plugins de WordPress.org.

Déjame saber si tienes algún problema al ejecutar el plugin.

11 jul 2018 20:43:07
0

Optaría por una solución mucho más sencilla. Mi suposición es que solo deseas que los visitantes vean una única página, sin necesidad de que ninguna página de WordPress sea visible, para cualquier solicitud a tu dominio.

Entonces, ¿por qué no crear una página HTML, darle estilo con algo de CSS y colocar esa página en otra carpeta de tu plataforma de hosting? Asegúrate de que la página tenga el aspecto que deseas.

Luego, simplemente apunta tu dominio a esa nueva carpeta. Con la mayoría de las plataformas de hosting, puedes especificar la carpeta base de un dominio. Así que redirige tu dominio a esa nueva carpeta base. No hay necesidad de complicadas redirecciones en .htaccess, plugins de WP ni filtros especiales para integrar en WordPress.

Otra opción sería mover todo el contenido fuera de la(s) carpeta(s) raíz del dominio actual y colocar tu archivo HTML simple en su lugar.

Muchos servicios de hosting también ofrecen una 'redirección global' para cualquier solicitud a cualquier página de tu dominio.

Cualquiera de estos métodos sería una solución simple para tu necesidad de tener solo una página en todo tu dominio.

Si realmente deseas una solución con .htaccess, usa esta:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

...reemplazando con tu dominio real. Esto también mantendrá contento al SEO.

25 sept 2018 09:33:56