web-dev-qa-db-fra.com

La réécriture Apache renvoie l'erreur 500

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.

2
tftd

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.

1
Itai