
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 .htaccess
das Überschreiben aller Anweisungen im /var/www
Verzeichnis zu ermöglichen.
Wie Sie herausgefunden haben,AllowOverride
ist nur im Rahmen des Directory
Abschnitts zulässig.
Anhand Ihres Beispiels:
<Directory "/var/www">
AllowOverride All
</Directory>
Dies teilt Apache mit, dass alle Konfigurationen im /var/www
und 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
.htaccess
Was 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 .htaccess
Dateien im /var/www
Ordner und seinen Unterverzeichnissen, mit Ausnahme des /var/www/uploads
Verzeichnisses und seiner Unterverzeichnisse, alle Arten von Anweisungen außer Kraft setzen können.
Aber /var/www/uploads
und seine Unterverzeichnisse können die .htaccess
Datei nur verwenden, um die Anweisungen Allow
, Deny
und außer Kraft zu setzen Order
.
Hinweis: Ab Apache 2.4 (standardmäßig in 13.10+ verfügbar) wurden die Direktiven Allow
, Deny
und Order
durch 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-available
Ordner:
/etc/apache2/sites-available
Bearbeiten Sie die Datei mit dem Namen default
und ändern Sie sie AllowOverride none
in AllowOverride All
. Diese Änderung muss in zwei Zeilen vorgenommen werden.
Dadurch funktioniert .htaccess
Ihr 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.