it-swarm.com.de

Apache .htaccess <Verzeichnis ist hier nicht zulässig

Ich betreibe XAMPP und versuche zu erfahren, wie .htaccess funktioniert. Ich habe eine Dateistruktur, die ungefähr so ​​aussieht:

/parent
    /foo
    /bar
    .htaccess

Ich möchte einfach alle foo-Anforderungen in bar ändern, wobei ein GET-Parameter nach ihnen angehängt wird. Zum Beispiel:

foo/
foo/hello.php

einbiegen in:

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

Wenn ich versuche, die <Directory>-Direktive in meine .htaccess-Datei aufzunehmen:

<Directory "/foo">
    Options +Indexes
</Directory>

Ich erhalte folgendes Fehlerprotokoll:

[Di 19 Sep 17: 23: 58.356362 2017] [core: alert] [pid 6336: tid 1900] [client :: 1: 60018] C: /xampp/htdocs/parent/.htaccess: <Das Verzeichnis ist hier nicht zulässig

Ich habe meine httpd.conf-Datei überprüft und alles ist in Ordnung. Ich bin mir sicher, wenn ich den Inhalt der .htaccess-Datei auf einfach ändere:

Options -Indexes

Es wird ein Fehler 403 korrekt angezeigt. Wenn ich - durch + ersetze, wird die Verzeichnisliste angezeigt.

Was mache ich falsch?

4
Hristiyan Dodov

Die <Directory>-Direktive ist in .htaccess nicht zulässig, und um Ihre Anforderungen zu erfüllen, benötigen Sie dies nicht einmal in .htaccess.

Sie können diese Regel im Site-Root (übergeordnet) verwenden. .htaccess:

RewriteEngine On

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

<Directory.. ist in .htaccess gemäß dem Handbuch nicht erlaubt. Sie können es nur in der Serverkonfiguration und im virtuellen Host haben. Sie sollten stattdessen mod_rewrite verwenden.

1
akond

Kurze Antwort: Löschen Sie einfach die .htaccess-Datei und Ihr error.log-Problem wird verschwinden.

Längere Antwort:

Ich habe früher heute dieselbe Nachricht in meiner Datei C:\xampp\Apache\logs\error.log erhalten. Der Fehler begann plötzlich (nach jahrelangem Einsatz von localhost ohne Probleme) und fiel mit einem "500 Server-Fehler" zusammen, als ich versuchte, localhost zu starten.

Der Inhalt der .htcaccess-Datei (die heute zum ersten Mal in meinem/Sites-Verzeichnis enthalten war) war:

<Directory>
  AllowOverride All
  Order allow,deny
</Directory>

Wie andere in Bezug auf ähnliche .htcaccess-Fragen festgestellt haben, ist die Datei im Allgemeinen nicht erforderlich.

Ich habe daher einfach die .htcaccess-Datei gelöscht, wodurch das Problem sofort gelöst wurde. Sofort startete localhost wieder und der Fehler verschwand aus den Protokollen!

0
TechnoCat