it-swarm.com.de

Ist dies ein korrekter Weg, um htaccess in Apache 2.4.7 zu aktivieren?

In fast jeder Lösung von "So aktivieren Sie htaccess" heißt es, dass die Datei/etc/Apache2/sites-available/default bearbeitet werden muss. Aber es gibt keine solche Datei in Apache 2.4.7

Ich habe irgendwo gelesen, dass die neue Standarddatei 000-default.conf ist. Also habe ich diesen bearbeitet und versucht, die Zeile hinzuzufügen:

AllowOverride All

Apache2 wurde jedoch nicht korrekt neu gestartet und gab einen Fehler aus. In einer Apache2-Dokumentation habe ich festgestellt, dass AllowOverride nur im Abschnitt <Directory> zulässig ist. Dann habe ich versucht, dies hinzuzufügen:

<Directory "/var/www">
AllowOverride All
</Directory>

Und das scheint zu funktionieren. Ich bin mir aber nicht sicher, ob ich/var/www hätte dort ablegen sollen. Ist es eine korrekte Vorgehensweise oder wird mein Computer irgendwie in die Luft gehen?

46
CluelessNoob

tl; dr

Ja, das ist der richtige Weg.
Aber um mehr semantisch zu sein : Ja, es ist der richtige Weg, .htaccess zu erlauben, alle Anweisungen in /var/www Verzeichnis.


Wie Sie herausgefunden haben, ist AllowOverride nur im Abschnitt Directory zulässig.

Verwenden Sie Ihr Beispiel:

<Directory "/var/www">
    AllowOverride All
</Directory>

Dies sagt Apache, dass alle Konfigurationen im /var/www und all seinen Unterverzeichnissen (rekursiv) überschrieben werden können.


Angenommen, Sie haben die folgende Konfiguration in Ihrem virtuellen Host, um ein besseres Beispiel zu erhalten:

<Directory "/var/www">
    AllowOverride All
</Directory>

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

Und die folgende Verzeichnisstruktur:

var/
    www/
        .htaccess
        uploads/
            .htaccess
            a/
                .htaccess
            b/
                .htaccess
        code/
            .htaccess
            c/
                .htaccess
            d/
                .htaccess

Was ich hier gemacht habe, ist ein .htaccess in jedem Unterverzeichnis des /var/www -Verzeichnisses zu erstellen.
Normalerweise sollte es nicht so sein, aber dies dient nur dem Beispiel.

Wenn Sie die Verzeichnisstruktur mit der Konfiguration vergleichen, bedeutet dies, dass alle .htaccess Dateien im /var/www Ordner und seinen Unterverzeichnissen außer dem /var/www/uploads Verzeichnis und seinen Unterverzeichnissen alle überschreiben können Arten von Richtlinien.

/var/www/uploads und seine Unterverzeichnisse können jedoch nur die .htaccess -Datei verwenden, um die Anweisungen Allow, Deny und Order zu überschreiben.

Hinweis: Ab Apache 2.4 (der standardmäßig in Version 13.10+ verfügbar ist) wurden die Anweisungen Allow, Deny und Order durch eine einzige Anweisung mit dem Namen Require ersetzt.

57
Dan

Aktivieren Sie zuerst das Neuschreiben mit dem folgenden Befehl:

Sudo a2enmod rewrite

Dann starte Apache2 neu:

Sudo service Apache2 restart

Dann gehe in den sites-available Ordner:

/etc/Apache2/sites-available

Bearbeiten Sie die Datei mit dem Namen default und ändern Sie AllowOverride none in AllowOverride All. Es gibt zwei Zeilen, in denen diese Änderung vorgenommen werden muss.

Dadurch funktioniert .htaccess in Ihrem Server-VPS.

Dies funktionierte auf einem Ubuntu 12.04.5 VPS.

38
q8fft

In meinem Fall hat es so funktioniert:
Ich musste folgende Zeilen hinzufügen:

Order allow, deny
Allow from all

So sieht es also aus:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
3
Prof. Chagas

Hier ein Ausschnitt, wie Sie htaccess in Apache 2.4 aktivieren können, ohne die Standardkonfiguration zu ändern:

cat <<EOF> /etc/Apache2/conf-available/allow-override.conf
<Directory "/var/www">
    AllowOverride all
</Directory>
EOF

a2enconf allow-override
service Apache2 reload
2
panticz.de