.htaccess réécrire la règle ne fonctionne pas sans fin barre oblique?

J’ai les URL suivantes:

www.website.com/index.php?section=index www.website.com/index.php?section=freebies www.website.com/index.php?section=deals www.website.com/index.php?section=articles 

et le paramètre d’URL de pagination suivant pour chaque: page = 1 par exemple

 www.website.com/index.php?section=freebies&page=1 

J’utilise les règles de réécriture ci-dessous pour changer l’URL en:

 www.website.com/freebies/1 etc 

www.website.com/freebies/1 et www.website.com/freebies/ fonctionnent correctement, mais si je supprime la barre oblique par exemple:

 www.website.com/freebies 

Il montre www.website.com/freebies/?section=freebies&page=1

Comment puis-je empêcher cela?

Mes règles de réécriture:

 RewriteRule ^([0-9]+)/?$ index.php?section=index&page=$1 [NC,L] RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L] RewriteRule ^articles/?$ index.php?section=articles&page=1 [L] RewriteRule ^deals/?$ index.php?section=deals&page=1 [L] RewriteRule ^freebies/([0-9]+)/?$ index.php?section=freebies&page=$1 [NC,L] RewriteRule ^articles/([0-9]+)/?$ index.php?section=articles&page=$1 [NC,L] RewriteRule ^deals/([0-9]+)/?$ index.php?section=deals&page=$1 [NC,L] 

freebies semblent être un vrai répertoire et le module mod_dir d’Apache ajoute une barre oblique aux répertoires, ce qui provoque une redirection, exposant ainsi votre URL interne aux clients.

Vous pouvez utiliser:

 RewriteEngine On # internally add a trailing slash to directories RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L] RewriteRule ^([0-9]+)/?$ index.php?section=index&page=$1 [NC,L,QSA] RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L,NC,QSA] RewriteRule ^articles/?$ index.php?section=articles&page=1 [L,NC,QSA] RewriteRule ^deals/?$ index.php?section=deals&page=1 [L,QSA,NC] RewriteRule ^freebies/([0-9]+)/?$ index.php?section=freebies&page=$1 [NC,L,QSA] RewriteRule ^articles/([0-9]+)/?$ index.php?section=articles&page=$1 [NC,L,QSA] RewriteRule ^deals/([0-9]+)/?$ index.php?section=deals&page=$1 [NC,L,QSA] 

Si je comprends bien, vous avez toujours besoin de la barre oblique pour que vos règles fonctionnent toujours.
Si tel est le cas, alors au-dessus de vos règles existantes, ajoutez ceci:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301] 

Ou, si cela ne fonctionne pas pour vous, vérifiez d’autres techniques pour append une barre oblique.

Pointe latérale:
Vos règles de jeu existantes

 RewriteRule ^freebies/?$ index.php?section=freebies&page=1 [L] RewriteRule ^articles/?$ index.php?section=articles&page=1 [L] RewriteRule ^deals/?$ index.php?section=deals&page=1 [L] 

Peut être simplifié par une seule règle:

 RewriteRule ^(freebies|articles|deals)/?$ index.php?section=$1&page=1 [L] 

MODIFIER:
Il est possible de faire ce que vous demandez (travailler avec slash et sans slash). Je pense que quelque chose comme ça fera l’affaire (non testé):

 RewriteRule ^freebies/?$ index.php?section=freebies&page=1 

(notez le? après la barre oblique)

Lisez également https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html ) pour vérifier comment le G traite ces scénarios.