web-dev-qa-db-fra.com

Comment transformer cette règle .htaccess en une règle dynamique avec add_rewrite_rule, et al?

En .htaccess, j'ai ceci:

RewriteRule ^land/(.*) /?land=1&exper=$1 [QSA,L]

ce qui fait qc comme ceci: domain.com/land/exper1 remplir le $ _GET avec

$ _GET ['land'] = 1 et $ _GET ['exper'] = exper1

Génial.

Je souhaite supprimer ceci de .htaccess et ajouter la règle de manière dynamique, c'est-à-dire rechercher d'autres valeurs de chaîne de requête telles que "océan" au lieu de "terre". Je veux que les valeurs soient renseignées dans $ _GET ou dans une autre variable permettant de les évaluer. Je ne peux pas savoir si add_rewrite_rule est censé écraser mon fichier .htaccess, mais tout ce que j'ai essayé, flush_rewrite_rules (true), etc. ne le fait pas.

1
Doug Cassidy

Essayez ceci et suivez la même structure pour ajouter plus de règles de réécriture ou de vars de requête:

add_filter('query_vars', 'my_query_vars');
function my_query_vars( $vars) {
    $vars[] = "land";
    $vars[] = "expert";
   return $vars;
}

// Add the new rewrite rule to existings ones
add_action('init','my_rewrite_rules');
function my_rewrite_rules() {
    add_rewrite_rule( 'land/(.+)/?$' , 'index.php?land=1&expert=$matches[1]' , 'top' );
}

N'oubliez pas de vider les règles de réécriture en allant dans la zone d'administration-> Paramètres-> permaliens-> cliquez sur Enregistrer.

0
cybmeta