Ist dies eine korrekte Möglichkeit, htaccess in Apache 2.4.7 zu aktivieren?

Ist dies eine korrekte Möglichkeit, htaccess in Apache 2.4.7 zu aktivieren?

In fast jeder Lösung zum Aktivieren von htaccess heißt es, dass die Datei /etc/apache2/sites-available/default bearbeitet werden muss. In Apache 2.4.7 gibt es diese Datei jedoch nicht.

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

AllowOverride All

Aber Apache2 startete nicht richtig neu und gab einen Fehler aus. Aus einer Apache2-Dokumentation erfuhr ich, dass AllowOverride nur unter diesem <Directory>Abschnitt zulässig ist. Dann versuchte ich, Folgendes hinzuzufügen:

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

Und das scheint zu funktionieren. Aber ich bin nicht sicher, ob ich /var/www dort hätte einfügen sollen. Ist das die richtige Vorgehensweise oder wird mein Computer irgendwie abstürzen?

Antwort1

tl;dr

Ja, das ist der richtige Weg.
Aber um mehr zu seinSemantik: Ja, das ist die richtige Methode, um .htaccessdas Überschreiben aller Anweisungen im /var/wwwVerzeichnis zu ermöglichen.


Wie Sie herausgefunden haben,AllowOverrideist nur im Rahmen des DirectoryAbschnitts zulässig.

Anhand Ihres Beispiels:

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

Dies teilt Apache mit, dass alle Konfigurationen im /var/wwwund allen Unterverzeichnissen (rekursiv) überschrieben werden können.


Als besseres Beispiel nehmen wir an, Ihr virtueller Host verfügt über die folgende Konfiguration:

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

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

Und folgende Verzeichnisstruktur:

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

.htaccessWas ich hier gemacht habe, ist, in jedem Unterverzeichnis des Verzeichnisses ein zu erstellen /var/www.
Normalerweise sollte das nicht so sein, aber das ist nur ein Beispiel.

Wenn man die Verzeichnisstruktur mit der Konfiguration vergleicht, bedeutet dies, dass alle .htaccessDateien im /var/wwwOrdner und seinen Unterverzeichnissen, mit Ausnahme des /var/www/uploadsVerzeichnisses und seiner Unterverzeichnisse, alle Arten von Anweisungen außer Kraft setzen können.

Aber /var/www/uploadsund seine Unterverzeichnisse können die .htaccessDatei nur verwenden, um die Anweisungen Allow, Denyund außer Kraft zu setzen Order.

Hinweis: Ab Apache 2.4 (standardmäßig in 13.10+ verfügbar) wurden die Direktiven Allow, Denyund Orderdurch eine einzelne Direktive namens ersetzt Require.

Antwort2

Aktivieren Sie zunächst das Umschreiben mit diesem Befehl:

sudo a2enmod rewrite

Starten Sie dann Apache2 neu:

sudo service apache2 restart

Gehen Sie dann in den sites-availableOrdner:

/etc/apache2/sites-available

Bearbeiten Sie die Datei mit dem Namen defaultund ändern Sie sie AllowOverride nonein AllowOverride All. Diese Änderung muss in zwei Zeilen vorgenommen werden.

Dadurch funktioniert .htaccessIhr VPS-Server.

Dies hat auf einem Ubuntu 12.04.5 VPS funktioniert.

Antwort3

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

Order allow, deny
Allow from all

Es sieht also so aus:

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

Antwort4

Ein häufiges Problem, auf das ich in diesen Tutorials gestoßen bin, ist, dass es keine default.conf-Datei gibt in

/etc/apache2/sites-available

Ich konnte die Stelle finden, an der ich es ändern konnte, aber es war die Datei apache2.conf hier

/etc/apache2/apache2.conf

Ich bin nicht sicher, ob das eine gute Idee ist, aber bei mir hat es funktioniert und in der Umgebung, in der ich mich befinde, ist es sicher.

verwandte Informationen