Redirigir todo el sitio web a una sola página

9

Necesito redireccionar todo un sitio de 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 de WordPress publicada. Desafortunadamente, la página de mantenimiento que debo mostrar tiene que usar otros complementos de WordPress.

No tengo conocimiento de ningún complemento de Modo de mantenimiento que te permita hacer esto. A lo sumo, te permiten escribir código HTML / CSS personalizado.

Estaba pensando en una regla .htaccess mod_rewrite. Sin embargo, soy muy débil con mod_rewrite.

Primero, yo redireccionamientos canónicos deshabilitados .

Entonces, traté de 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 redireccionamiento. page_id=813 es el ID de mi página de mantenimiento, por supuesto.

¿Alguien está al tanto de un complemento de modo de mantenimiento, que redirige a una página publicada?

Alternativamente, ¿puede alguien ayudarme a arreglar las reglas mod_rewrite? Saludos adicionales si podemos dejar a /wp-admin fuera de las reglas de redireccionamiento.

    
pregunta dgraziotin 20.12.2012 - 22:30

3 respuestas

13

No necesitas .htaccess para hacer esto en absoluto. Una solución .htaccess estaría hinchada y sobrecargada.

En su lugar, podemos enganchar en el filtro template_redirect , que solo se activa 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 de 813. De lo contrario, redirigir a esa página usando la función wp_redirect() .

add_action( 'template_redirect', 'wpse_76802_maintance_mode' );

function wpse_76802_maintance_mode() {
    if ( ! is_page( 813 ) ) {
        wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
        exit;
    }
}

Esto funcionará muy bien para un modo de mantenimiento, ya que la redirección se realiza con el encabezado HTTP 'temporal' 302, lo que permite que los robots y los motores de búsqueda sepan que su sitio estará listo pronto. Sin embargo, si está moviendo el sitio de forma permanente, es posible que desee utilizar un encabezado HTTP "permanente" 301 para la redirección. Puede hacer esto agregando un segundo parámetro a la función wp_redirect . Ejemplo:

add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' );

function wpse_76802_goodbye_redirect() {
    if ( ! is_page( 813 ) ) {
        wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ), 301 ) );
        exit;
    }
}
    
respondido por el shea 21.12.2012 - 00:12
1

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

Si está interesado, no dude en descargar el complemento desde Github = > enlace .

Opciones

Las opciones de plugin son muy simples; por el momento, están codificados en el archivo del complemento, pero podría considerar crear una página de opciones si la gente lo solicita:

  • DESTINATION_URL : la URL completa donde 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 publicación de WordPress, especifique aquí su ID de WordPress.
  • USER_CAPABILITY : los usuarios con esta capacidad no serán redirigidos; dejar en blanco para redirigir a todos; el valor predeterminado es 'manage_options', que está habilitado para los usuarios administradores.
  • REDIRECT_STATUS_CODE : estado de redirección: 302 para la redirección temporal, 301 para la redirección permanente.
  • DEBUG : si se imprime información de depuración en debug.log.

Información actualizada en la página de Github = > enlace .

Tenga en cuenta que el complemento es muy básico; los usuarios más avanzados podrían considerar, en cambio, uno de los muchos complementos de mantenimiento disponibles en el repositorio de complementos de WordPress.org.

Avíseme si tiene algún problema para ejecutar el complemento

respondido por el Guido Walter Pettinari 11.07.2018 - 19:43
0

Iría por una solución mucho más simple. Supongo que solo desea que cualquiera vea una página, no es necesario que ninguna página WP esté visible, para cualquier solicitud de su dominio.

Entonces, ¿por qué no crear una página HTML, diseñarla con algo de CSS y colocar esa página en otra carpeta en su plataforma de alojamiento? 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 alojamiento, puede especificar la carpeta base de un dominio. Así que apunta tu dominio a esa nueva carpeta base. No es necesario realizar redirecciones de htaccess complicadas, ni complementos de WP, ni filtros especiales para enganchar a WP.

O, puede mover todo el contenido de la (s) carpeta (s) raíz (s) del dominio actual y colocar su archivo HTML simple en su lugar.

Los lugares de hospedaje también pueden tener un 'redireccionamiento global' para cualquier solicitud a cualquier página de su dominio.

De cualquier manera, sería una solución simple para sus necesidades de tener solo una página para todo su dominio.

Si realmente desea una solución htaccess, use esta:

RewriteEngine on

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

... se reemplaza con tu dominio real. También hace feliz a SEO.

    
respondido por el Rick Hellewell 25.09.2018 - 08:33

Lea otras preguntas en las etiquetas