Apache .htaccess <Répertoire non autorisé ici

Je lance XAMPP et j’essaie d’apprendre comment fonctionne .htaccess. J’ai une structure de fichier qui ressemble à ceci:

/parent /foo /bar .htaccess 

Je veux simplement changer toutes les requêtes foo en bar avec un paramètre GET ajouté après elles. Par exemple:

 foo/ foo/hello.php 

changer en:

 bar/?test=yes bar/hello.php?test=yes 

Lorsque j’essaie de placer la directive dans mon fichier .htaccess:

  Options +Indexes  

Je reçois le journal d’erreur suivant:

[Mar sept. 19 17: 23: 58.356362 2017] [core: alert] [pid 6336: tid 1900] [client :: 1: 60018] C: /xampp/htdocs/parent/.htaccess: <Répertoire non autorisé ici

J’ai vérifié mon fichier httpd.conf et tout va bien. Je suis sûr parce que si je change le contenu du fichier .htaccess simplement:

 Options -Indexes 

Il affiche correctement une erreur 403. Si je remplace le - par + , il affiche la liste des répertoires.

Qu’est-ce que je fais mal?

directive n’est pas autorisée dans .htaccess et pour répondre à vos besoins, vous n’en avez même pas besoin dans .htaccess.

Vous pouvez utiliser cette règle dans la racine du site (parent) .htaccess :

 RewriteEngine On RewriteCond %{QUERY_STRING} !(?:^|&)test=yes(?:&|$) [NC] RewriteRule ^foo/(.*)$ bar/$1?test=yes [NC,QSA,L] 

n'est pas autorisé dans .htaccess selon le manuel . Vous pouvez l'avoir uniquement dans la configuration du serveur et l'hôte virtuel. Vous devriez utiliser mod_rewrite place.

Réponse courte: Supprimez simplement le fichier .htaccess et votre problème error.log disparaîtra.

Réponse plus longue:

J’ai commencé à recevoir le même message dans mon fichier C: \ xampp \ apache \ logs \ error.log plus tôt aujourd’hui. L’erreur a commencé soudainement (après des années d’utilisation de localhost sans accroc) et a coïncidé avec une “erreur de serveur 500” lorsque j’ai essayé de démarrer localhost.

Le contenu du fichier .htcaccess (apparu dans mon répertoire / Sites pour la première fois aujourd’hui) était:

  AllowOverride All Order allow,deny  

Comme d’autres l’ont noté en ce qui concerne les questions similaires .htcaccess, le fichier n’est généralement pas nécessaire.

J’ai donc simplement supprimé le fichier .htcaccess, qui a résolu le problème instantanément. Immédiatement, localhost a recommencé à fonctionner et l’erreur a disparu des journaux!