Comment puis-je empêcher la chaîne de requête d’être traînée jusqu’à la fin de l’URL avec htaccess?

J’ai le htaccess ci-dessous:

Options -Multiviews -Indexes +FollowSymLinks RewriteEngine On RewriteRule ^(pageA|pageB|pageC|pageD)(?:\/(\d+)\/?(.*))?$ ./$1/?var1=$1&var2=$2&var3=$3 [NC,QSA,L] 

Les URL ci-dessous fonctionnent correctement car, dans la hiérarchie des dossiers, les noms de dossier sont (pageA, pageB ….) et chacun contient un fichier index.php et gère l’ID transmis dans l’URL pour afficher le contenu approprié sur le dossier. page:

www.domain.com/pageA/

www.domain.com/pageA/12/title-of-item-number-12

Mon problème se produit lorsque j’accède au nom du dossier uniquement et supprime la barre oblique finale:

www.domain.com/pageA

La page demandée se charge correctement mais la chaîne de requête sera ajoutée à l’URL comme suit:

www.domain.com/pageA/?var1=pageA&var2=&var3=

Comment puis-je empêcher la chaîne de requête d’être traînée jusqu’à la fin de l’URL?

Ajoutez simplement une autre règle de réécriture qui ne correspond qu’à pageA / pageB, etc. et réécrivez-la sur l’URL sans la chaîne de requête. Donc, vous allez vous retrouver avec quelque chose comme ça:

 Options -Multiviews -Indexes +FollowSymLinks RewriteEngine On RewriteRule ^(pageA|pageB|pageC|pageD)$ ./$1/ [L] RewriteRule ^(pageA|pageB|pageC|pageD)(?:\/(\d+)\/?(.*))?$ ./$1/?var1=$1&var2=$2&var3=$3 [NC,QSA,L]