web-dev-qa-db-fra.com

Apache .htaccess <Répertoire non autorisé ici

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.

Qu'est-ce que je fais mal?

4
Hristiyan Dodov

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]
2
anubhava

<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.

1
akond

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!

0
TechnoCat