Je dois rediriger un site WordPress complet vers une seule page WordPress. Une sorte de mode de maintenance, mais la redirection doit aller sur une page WordPress publiée. Malheureusement, la page de maintenance que je dois montrer doit utiliser d'autres plugins WordPress.
Je ne suis au courant d'aucun plug-in du mode maintenance qui vous permette de le faire. Tout au plus, ils vous permettent d'écrire du code HTML/CSS personnalisé.
Je pensais à une règle .htaccess mod_rewrite. Cependant, je suis très faible avec mod_rewrite.
Premièrement, je j'ai désactivé les redirections canoniques .
Ensuite, j'ai essayé d'utiliser:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]
Cependant, ces règles génèrent des boucles de redirection. page_id=813
est l'ID de ma page de maintenance, bien sûr.
Est-ce que quelqu'un est au courant d'un plugin en mode maintenance, qui redirige vers une page publiée?
Sinon, quelqu'un peut-il m'aider à résoudre les règles mod_rewrite? Bravo supplémentaire si nous pouvons laisser /wp-admin
en dehors des règles de redirection.
Vous pouvez le faire depuis WordPress même, au lieu d’avoir besoin d’un correctif .htaccess déroutant et trop élaboré.
Nous pouvons nous connecter au filtre template_redirect
, qui ne se déclenche que sur le front-end (pas dans wp-admin). Nous utilisons ensuite la fonction is_page()
pour vérifier si nous affichons une page avec l’ID 813. Si ce n’est pas le cas, redirigez-vous vers cette page à l’aide de la fonction 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;
} );
Cela fonctionnera très bien en mode maintenance, car la redirection s'effectue avec l'en-tête HTTP "temporaire" 302, ce qui permet aux robots et aux moteurs de recherche de savoir que votre site sera bientôt opérationnel. Toutefois, si vous déplacez le site de manière permanente, vous pouvez utiliser un en-tête HTTP "permanent" 301 pour la redirection. Vous pouvez le faire en ajoutant un deuxième paramètre à la fonction wp_redirect
. Exemple:
add_action( 'template_redirect', function() {
if ( is_page( 813 ) ) {
return;
}
wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
exit;
} );
J'ai intégré la réponse acceptée par @shea dans un plug-in d'un fichier et ajouté deux options: rediriger uniquement les utilisateurs non-administrateurs et rediriger vers une URL arbitraire.
Si vous êtes intéressé, n'hésitez pas à télécharger le plugin de Github =>https://github.com/Idearia/wp-redirect-website-to-url.
Les options du plugin sont très simples. pour le moment, ils sont codés en dur dans le fichier plugin, mais je pourrais envisager de construire une page d'options si les gens le demandent:
Informations mises à jour sur la page Github => https://github.com/Idearia/wp-redirect-website-to-url .
Veuillez noter que le plugin est très basique. les utilisateurs plus avancés pourraient plutôt envisager l'un des nombreux plug-ins de maintenance disponibles sur le référentiel de plug-ins WordPress.org.
Faites-moi savoir si vous avez un problème avec le plugin ????
Je choisirais une solution beaucoup plus simple. Mon hypothèse est que vous ne voulez que quiconque ne voie qu'une seule page - aucune page WP ne doit être visible - pour toute demande relative à votre domaine.
Alors, pourquoi ne pas créer une page HTML, lui attribuer un style CSS et la placer dans un autre dossier de votre plate-forme d'hébergement. Assurez-vous que la page ressemble à ce que vous voulez.
Ensuite, pointez simplement votre domaine vers ce nouveau dossier. Avec la plupart des plateformes d'hébergement, vous pouvez spécifier le dossier de base d'un domaine. Alors pointez votre domaine vers ce nouveau dossier de base. Pas besoin de redirections htaccess compliquées, ni de plugins WP, ni de filtres spéciaux à connecter à WP.
Vous pouvez également déplacer tout le contenu hors du ou des dossiers racine du domaine actuel et placer votre simple fichier HTML à la place.
Les lieux d'hébergement peuvent également avoir une "redirection globale" pour toute demande vers n'importe quelle page de votre domaine.
Dans tous les cas, une solution simple à vos besoins consiste à n’avoir qu’une page pour l’ensemble de votre domaine.
Si vous voulez vraiment une solution htaccess, utilisez celle-ci:
RewriteEngine on
RewriteRule ^(.*)$ http://www.example.com/ [R=permanent,L]
..replacing avec votre domaine actuel. Rend le référencement heureux également.