Bei einer auf Apache gehosteten ownCloud Classic-Installation beheben Sie die Warnung „AllowOverride All“ oder „.htaccess funktioniert nicht“, indem Sie im aktiven virtuellen Host AllowOverride Allinnerhalb eines entsprechenden Apache- <Directory>Blocks für das ownCloud-Webverzeichnis die entsprechende Einstellung vornehmen. Testen Sie die Apache-Konfiguration, laden Sie den Dienst neu und aktualisieren Sie die ownCloud-Administrationsübersicht. Aktivieren Sie keine Überschreibungen für das gesamte Dateisystem.
Die Überschreibung gehört in den Apache-Verzeichnisblock, der dem Dateisystempfad von ownCloud entspricht.
Was die Warnung bedeutet
Die Apache- AllowOverrideDirektive steuert, welche Einstellungen eine .htaccessDatei anwenden darf. Wenn Überschreibungen für das ownCloud-Verzeichnis deaktiviert sind, kann Apache die Regeln in der von ownCloud bereitgestellten .htaccessDatei ignorieren. Dies kann sich auf Rewrite-Regeln und Sicherheitsregeln auswirken. Aus diesem Grund enthält das aktuelle ownCloud-Handbuch (Version 10.16) AllowOverride Allein Beispiel für die Apache-Konfiguration.
Die Direktive ist nur in einem Apache-Abschnitt gültig <Directory>. Sie gehört nicht in .htaccesseinen ` <Location><head>`-Block oder einen URL-Pfad. Apache weist Administratoren außerdem darauf hin, Überschreibungen nicht im globalen ` <Directory "/"><head>`-Block zu aktivieren; beschränken Sie die Einstellung stattdessen auf das ownCloud-Installationsverzeichnis. Weitere Informationen finden Sie im ownCloud 10.16 Apache-Installationshandbuch und in der Apache- AllowOverrideReferenz .
Bevor Sie Apache bearbeiten
Vergewissern Sie sich, dass der Webserver, der ownCloud verwaltet, Apache ist. Diese Anweisung konfiguriert Nginx nicht. Falls sich Apache hinter einem Proxy befindet, ermitteln Sie den Apache-Host, der die ownCloud-Dateien bereitstellt.
Ermitteln Sie den tatsächlichen Installationspfad von ownCloud, z. B. /var/www/owncloud. Verwenden Sie den Dateisystempfad, den Apache bereitstellt, nicht eine Browser-URL wie /owncloud.
Sichern Sie die aktive Virtual-Host-Datei, bevor Sie sie ändern. Unter Debian oder Ubuntu verwendet die ownCloud-Anleitung den Pfad /etc/apache2/sites-available/owncloud.conf; andere Distributionen verwenden andere Speicherorte.
Prüfen Sie, ob Ihre HTTP- und HTTPS-Virtual-Hosts getrennt sind. Nehmen Sie die Einstellung im VHost vor, der ownCloud-Anfragen verarbeitet. Wenn beide VHosts die Dateien direkt bereitstellen, konfigurieren Sie beide einheitlich.
Unter Debian oder Ubuntu sudo apachectl -Swerden die virtuellen Hosts von Apache und die zugehörigen Konfigurationsdateien aufgelistet. Dadurch wird vermieden, dass eine ungenutzte Standardwebsite bearbeitet werden muss, während der HTTPS-VHost weiterhin ownCloud bereitstellt.
Fügen Sie die Direktive dem entsprechenden Verzeichnisblock hinzu.
Öffnen Sie die aktive vhost-Datei und suchen Sie den vorhandenen ownCloud- <Directory>Abschnitt. Fügen Sie dort die entsprechende Zeile hinzu oder korrigieren Sie sie. Bei einer Standardinstallation unter /var/www/owncloudkönnte der relevante Abschnitt beispielsweise so aussehen:
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud/>
Options +FollowSymLinks -Indexes
AllowOverride All
Require all granted
</Directory>
Integrieren Sie die Einstellung in Ihre bestehende Konfiguration, anstatt den gesamten virtuellen Host durch dieses kurze Beispiel zu ersetzen. Befindet sich Ihr ownCloud-Verzeichnis an einem anderen Ort, ersetzen Sie beide Pfade durch den tatsächlichen Pfad. Apache benötigt, dass der Verzeichnispfad mit dem Dateisystempfad übereinstimmt, den es für die Dateien verwendet.
AllErlaubt es, dass jede in einer Datei zulässige Direktive .htaccessdie Servereinstellungen in diesem Verzeichnis überschreibt. Dies ist eine weitreichende Berechtigung; beschränken Sie diesen Block daher auf das ownCloud-Webverzeichnis. Ändern Sie die Einstellungen nicht AllowOverride Nonefür andere Websites, nur um die Warnung zu unterdrücken /./var/www
Testen, neu laden und überprüfen
Unter Debian oder Ubuntu dokumentiert ownCloud mod_rewritedie für die Apache-Konfiguration erforderlichen Dokumente. Falls Apache nicht aktiviert ist, aktivieren Sie es mit folgendem Befehl:
sudo a2enmod rewrite
Überprüfen Sie anschließend die Konfiguration, bevor Sie sie anwenden:
sudo apachectl -t
Fahren Sie nur fort, wenn Apache eine Meldung meldet Syntax OK. Laden Sie Apache neu, damit es den aktualisierten virtuellen Host liest:
sudo systemctl reload apache2
Bei Distributionen, die den httpdDienstnamen verwenden, nutzen Sie stattdessen die Konfigurationstest- und Neuladebefehle dieser Distribution. Kehren Sie zu ownClouds Einstellungen > Administration > Übersicht zurück und aktualisieren Sie die Seite. Die Warnung sollte verschwinden, sobald Apache den bearbeiteten virtuellen Host liest und ownClouds Konfiguration verarbeitet .htaccess.
Prüfen Sie, ob das Rewrite-Modul von Apache aktiviert ist, wenn das Rewrite-Verhalten von ownCloud Teil der Warnung ist.Überprüfen Sie die Apache-Konfiguration, bevor Sie den Dienst neu laden.Nach dem Neuladen sollten Sie die Administrationsübersicht erneut aufrufen und prüfen, ob die .htaccess-Warnung verschwunden ist.
Wenn die Warnung weiterhin angezeigt wird
Überprüfen Sie den aktiven virtuellen Host. Führen Sie den Befehl sudo apachectl -Serneut aus und vergewissern Sie sich, dass die geänderte Datei zum Hostnamen und Port gehört, die von ownCloud verwendet werden. Eine AllowOverride AllZeile in einem nicht übereinstimmenden Block hat keine Auswirkung.
Überprüfen Sie den genauen Pfad und Abschnitt. Stellen Sie sicher, dass der Block ein Literalabschnitt ist <Directory /path/to/owncloud/>und der Pfad mit dem Installationsverzeichnis übereinstimmt. Apache ignoriert AllowOverridein .htaccessund <Location>.
Generieren Sie veraltete ownCloud-Regeln nur bei Bedarf neu. Wenn der vHost korrekt ist, die Rewrite-Regeln von ownCloud aber aktualisiert werden müssen, finden Sie die entsprechenden Informationen im Handbuch occ maintenance:update:htaccess. Führen Sie das Skript im ownCloud-Verzeichnis als Webserver-Benutzer aus sudo -u www-data php occ maintenance:update:htaccess. Der Webserver-Benutzer muss Schreibrechte für die bereitgestellte Datei besitzen .htaccess. Die Datei darf nicht für alle Benutzer beschreibbar sein; korrigieren Sie die Besitzrechte und Berechtigungen gemäß den Anweisungen Ihrer Installation.
Lesen Sie nach einem 500-Fehler das Apache-Fehlerprotokoll. Eine Syntaxprüfung validiert die Hauptkonfiguration von Apache, aber eine Direktive .htaccesskann dennoch fehlschlagen, wenn das zugehörige Modul fehlt oder die Direktive nicht zulässig ist. Verwenden Sie das Fehlerprotokoll, um das spezifische Modul oder die Regel zu identifizieren.
Die dokumentierte URL-Konfiguration von ownCloud ohne index.php erfordert ebenfalls ein beschreibbares Stammverzeichnis mod_rewrite. Dies ist eine damit zusammenhängende Rewrite-Konfiguration und kein Grund, die Überschreibungen über das ownCloud-Verzeichnis hinaus zu erweitern. Wenn Ihre Konfiguration PHP-FPM verwendet, befolgen Sie die aktuellen ownCloud-Richtlinien für diese Installation, anstatt PHP-Handler zu ändern, um eine Apache-Warnung zu beheben. Falls die Warnung besagt, dass das Datenverzeichnis möglicherweise öffentlich zugänglich ist, überprüfen Sie, ob sich das Datenverzeichnis außerhalb des Web-Stammverzeichnisses befindet oder durch eine explizite Apache-Regel geschützt ist. Das Beheben der Warnung allein beweist nicht, dass private Dateien nicht direkt angefordert werden können.mod_env.htaccess.htaccess