La règle de réécriture conduit à une erreur 403 interdite

J’ai posé une question ici hier et l’utilisateur “faa” a essayé de m’aider, mais malheureusement nous n’avons pas pu résoudre le problème.

La question originale est ici: réécrire l’url avec htaccess quand un répertoire existe

Je fais une réécriture simple mais elle ne fonctionne pas (apparemment) en raison des permissions d’access aux répertoires.

Le code:

* Page dynamic: url.com/index.php?page=download

Réécrire la règle: ^ télécharger $ /index.php?page=download

Le problème:

Un répertoire nommé “download” existe. Lorsque la règle de réécriture tente de réécrire la page dynamic * sur le chemin “download”, elle renvoie une erreur 403 FORBBIDEN et la page est réécrite pour “download /? Page = download”.

Maintenant, si je renomme ce répertoire à autre chose, comme “downloads”, alors ça marche.

— MODIFIER —

Mon serveur, par défaut, protège chaque répertoire avec une “erreur 403 Forbbiden”. Je crois que c’est la raison pour laquelle cela ne fonctionne pas, mais je ne suis pas sûr. Est-ce un conflit en effet? Qu’est-ce qui se passe?

/ download /? page = télécharger

La raison pour laquelle cela se produit est que quelque part mod_dir redirige toutes les demandes de répertoires qui manquent la barre oblique finale pour inclure la barre oblique finale. Cela interfère avec votre règle de réécriture. Etant donné que votre serveur est automatiquement configuré pour refuser la liste des répertoires, il est sans doute préférable de continuer et de désactiver les barres obliques:

DirectorySlash Off 

Essayer

 RewriteRule ^download[/]?$ index.php?page=download 

La règle correspond même si le chemin a été fourni avec un /, de sorte que le téléchargement du répertoire est inaccessible.

Assurez-vous que le RewriteRule s’exécute même après une redirection.