J'essaie de comprendre ce que je ne fais pas avec cette .htaccess réécrire:
Options -Indexes
RewriteEngine on
RewriteBase /test/site/
RewriteOptions MaxRedirects=10
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /test/site/public/page.php?rel=$1 [NC,L,B]
J'ai un script Front-end qui gère toutes les demandes. Dans mon cas, je n'ai pas besoin ni de fichier index.php/index.html
dans mon projet racine (/test/site/
). Cela amène Apache à générer une erreur 403 en raison de la première ligne du code.
Le code ne fonctionnera que si vous accédez aux liens comme suit:
http://localhost/test/site/public/index
http://localhost/test/site/public/something/else/index.html
Mais si vous entrez
http://localhost/test/site/public/
Ça va jeter 403 erreur.
Je suis sûr que je fais quelque chose de mal mais je ne peux pas le comprendre.
Eh bien, votre RewriteRule ne s'applique pas car le chemin que vous essayez est un répertoire. Comme configuré, votre .htaccess redirige les éléments qui ne sont ni l'un ni l'autre.
Vous aurez besoin d'une règle supplémentaire ou d'une page 403 personnalisée pour gérer les répertoires. Vous pouvez également modifier votre condition en fichiers uniquement. En d'autres termes, supprimez la deuxième ligne RewriteCond. Ce que vous faites dépend de ce que vous voulez faire pour un chemin de répertoire.