Je lance XAMPP et j'essaie d'apprendre comment .htaccess fonctionne. 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 <Directory>
dans mon fichier .htaccess:
<Directory "/foo">
Options +Indexes
</Directory>
Je reçois le journal des erreurs suivant:
[Tue Sep 19 17: 23: 58.356362 2017] [noyau: alerte] [pid 6336: date 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 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.
La directive <Directory>
n'est pas autorisée dans .htaccess et pour répondre à vos exigences, 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]
<Directory..
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
à la 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 500 serveurs" lorsque j'ai essayé de démarrer localhost.
Le contenu du fichier .htcaccess (qui figurait dans le répertoire/Sites pour la première fois aujourd'hui) était le suivant:
<Directory>
AllowOverride All
Order allow,deny
</Directory>
Comme d'autres l'ont noté à propos de questions .htcaccess similaires, le fichier n'est généralement pas nécessaire.
J'ai donc simplement supprimé le fichier .htcaccess, qui a immédiatement résolu le problème. Immédiatement, localhost a recommencé à fonctionner et l'erreur a disparu des journaux!