Je veux avoir deux URL différentes pour la même page. En particulier, je veux avoir une URL spécifique qui montre ma page d'accueil. L'URL doit être conservé cependant. Donc, ces deux URL
www.mywebsite.com/
www.mywebsite.com/page1
devraient tous deux afficher la page d'accueil. Je pensais que cela pourrait être fait avec la fonction add_rewrite_rule
de WordPress, mais je n'ai pas encore eu de succès avec ça.
Quand je fais ça
add_rewrite_rule('^page1', 'index.php', 'top');
Cela agit plus comme une redirection. Lorsque j'essaie d'accéder à www.mywebsite.com/page1
, je suis redirigé vers ma page d'accueil. Mais je veux que l'URL reste la même chose, ce que cela ne semble pas faire.
Quand je fais ça
add_rewrite_rule('^page1', 'index.php?pagename=$matches[1]', 'top');
il montre simplement la page www.mywebsite.com/page1 au lieu de la page d'accueil.
Cela fait des heures que je bricole avec les règles de réécriture et je suis presque à bout de forces. Est-ce que je veux même possible?
Edit: Ceci diffère de nombreuses autres questions en ce sens que j'essaie de montrer la page d'accueil. La solution fournie ici résout ce problème, lorsque vous pouvez utiliser la requête d'emplacement var, mais je ne l'ai pas fait fonctionner avec cela.
WordPress essaiera toujours de rediriger vers l'URL canonique pour éviter le contenu en double. Vous devrez donc désactiver ce mécanisme pour obtenir une autre URL afin d'afficher cette page.
Tout d'abord, votre règle de réécriture:
add_rewrite_rule('^page1', 'index.php?pagename=your-page-name', 'top');
Puis filtrez redirect_canonical
pour renvoyer false si l'URL demandée est votre 2ème URL de base:
function my_redir_check( $redirect_url, $requested_url ){
if( home_url( '/page1/' ) == trailingslashit( $requested_url ) ){
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'my_redir_check', 10, 2 );