web-dev-qa-db-fra.com

Avoir deux URL différentes pour afficher la page d'accueil

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.

1
TheKidsWantDjent

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 );
1
Milo