So legen Sie AllowOverride all fest

161

Ich möchte das einstellen, AllowOverride allaber ich weiß nicht, wie ich es machen soll. Ich habe den folgenden Code durch Durchsuchen von Google gefunden und eingefügt .htaccess:

<Directory>
        AllowOverride All
</Directory>

Aber nachdem ich es eingefügt hatte, fing ich an zu empfangen "Internal Server Error"

Kann mir jemand zeigen, wo ich diesen Code ablegen soll oder wie ich es machen soll?

Munib
quelle
3
Die <Directory>Direktive erfordert ein Pfadargument.
FKEinternet

Antworten:

317

Wenn Sie unter Ubuntu arbeiten, bearbeiten Sie die Datei /etc/apache2/apache2.conf(hier haben wir ein Beispiel dafür /var/www):

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

und ändere es auf;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

dann,

sudo service apache2 restart

Möglicherweise müssen Sie auch sudo a2enmod rewritedas Umschreiben von Modulen aktivieren.

Naveed
quelle
55
Ich musste es auch benutzen sudo a2enmod rewrite, dann hat es funktioniert. Unter Ubuntu 14.04 LTS. Hoffe, es wird jemandem nützlich sein.
Jonauz
2
Seltsam ... wenn ich das mache, bekomme ich den internen Serverfehler. Zeigt dies einen Fehler in der .htaccess-Datei an, die sich unter /var/www/.htaccess befindet? Wenn Sie den Apache2 aktivieren, kehren Sie zu AllowOverride None zurück. Behebt den Fehler, lässt jedoch keine URL-Umschreibungen zu.
o_O
In Ubuntu 12.04. Ich fand diese Datei unter / etc / apache2 / sites-available / default path
ان غني
Wie kann ich dies aus einer separaten Datei überschreiben? Ich kann sehen, dass sich IncludeOptional conf-enabled/*.confin der letzten Zeile meiner apache2.confDatei ein befindet. Aber es scheint, dass dies apache2.confstattdessen priorisiert wird.
JohnnyQ
Das macht die Magie für mich. Nachdem ich meinen Firmen-Debian-Server von Wheezy auf Jessie aktualisiert hatte, funktionierte alles in Apache nicht mehr und nach dem Hinzufügen funktionierte alles wieder.
Periket2000
51

Das Hauptziel von AllowOverrideist es, dass der Manager der Hauptkonfigurationsdateien von Apache (die in / etc / apache2 / hauptsächlich gefunden wird) entscheidet, welcher Teil der Konfiguration von Anwendungen pro Pfad dynamisch geändert werden kann.

Wenn Sie nicht der Administrator des Servers sind, sind Sie auf AllowOverride angewiesen Ebene ab, . Damit sie verhindern können, dass Sie einige wichtige Sicherheitseinstellungen ändern.

Wenn Sie der Master-Apache-Konfigurationsmanager sind, sollten Sie immer AllowOverride Nonealle auf Google_Basis basierenden Beispiele verwenden und übertragen, die auf .htaccess-Dateien basieren, und DirectoryAbschnitte in Abschnitte der Hauptkonfigurationsdateien übertragen. Ein .htaccess-Inhalt für eine .htaccessDatei in entspricht /my/path/to/a/directoryeiner <Directory /my/path/to/a/directory>Anweisung, mit der Ausnahme, dass die .htaccessdynamische Änderung der Konfiguration pro HTTP-Anforderung Ihren Webserver verlangsamt. Bevorzugen Sie immer eine statische Konfiguration ohne .htaccessÜberprüfung (und Sie vermeiden auch Sicherheitsangriffe durch.htaccess Änderungen).

Übrigens, in Ihrem Beispiel, das Sie verwenden, <Directory>und dies wird immer falsch sein, enthalten Verzeichnisanweisungen immer einen Pfad, wie <Directory />oder <Directory C:>oder <Directory /my/path/to/a/directory>. Und natürlich kann dies nicht in einem gesetzt werden .htaccessals .htaccesswie ein Verzeichnis - Befehl ist , sondern in einer Datei in diesem Verzeichnis. Natürlich kann man nicht ändern , AllowOverridein einem .htaccessals dieser Befehl die verwaltete Sicherheitsstufe von .htaccessDateien.

Regilero
quelle
17

Springen your_severpath/apache_ver/conf/ Öffnen Sie die Dateihttpd.conf im Editor.

Finden Sie diese Zeile:

#LoadModule vhost_alias_module modules / mod_vhost_alias.so

Entfernen Sie das Hash-Symbol:

LoadModule vhost_alias_module modules / mod_vhost_alias.so

Dann geh zu <Directory />

und wechseln zu:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Starten Sie dann Ihren lokalen Server neu.

Achintya Nayak
quelle
Job erledigt! Ty Sir!
James Walker
6
NB Order allow,denyund Allow from allsind für Apache 2.2 und früher. Mit Apache 2.4 werden diese beiden Zeilen Require all grantedwie in anderen Antworten gezeigt ersetzt.
FKEinternet
13

Unter Linux sollten Sie die folgende Datei bearbeiten, um den Zugriff auf das Dokumentstammverzeichnis zu vereinfachen:

/etc/httpd/conf/httpd.conf

Und je nachdem, auf welche Verzeichnisebene Sie den Zugriff lockern möchten, müssen Sie die Direktive ändern

AllowOverride None

zu

AllowOverride All

Angenommen, Sie möchten den Zugriff auf Dateien im Verzeichnis / var / www / html zulassen, sollten Sie die folgenden Zeilen von ändern:

<Directory "/var/www/html">
 AllowOverride None
</Directory>

zu

<Directory "/var/www/html">
 AllowOverride All
</Directory>
Javier La Banca
quelle
8
und starten Sie den Server nach
Daniel
Nach hundertmaliger doppelter Überprüfung meiner .htacces - das war die Lösung! Vielen Dank. Ich dachte, "all" ist der Standardwert der Apache-Konfiguration.
Matthias Kleine
Außerdem ist es nicht gut, Linux in Ihrer Antwort zu erwähnen. Obwohl dies alt ist, möchte ich nur klarstellen, dass das, was Sie sagen, für Redhat-basierte Distributionen gilt
Chi.CJRajeeva Lochana
11

Wenn Sie Linux verwenden, können Sie den Code im Verzeichnis von bearbeiten

/etc/httpd/conf/httpd.conf

Jetzt finden Sie hier die Codezeile irgendwie wie

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Ändern Sie AllowOveride None in AllowOveride All

Jetzt können Sie jede Art von Regel in Ihrer .httacess-Datei in Ihren Verzeichnissen festlegen, wenn ein anderes Betriebssystem nur versucht, die Datei von httpd.conf zu finden und zu bearbeiten.

SAR
quelle
Ab 2015Nov18 1539 PST wird bei der Suche in Google nach "allowoverride" ein Feld über den Suchergebnissen now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
angezeigt, in dem Folgendes angezeigt wird
6

Ich denke, Sie möchten es in Ihrer httpd.confDatei anstelle der .htaccessDatei festlegen .

Ich bin nicht sicher, welches Betriebssystem Sie verwenden, aber dieser Link für Ubuntu gibt Ihnen möglicherweise einige Hinweise, was zu tun ist.

https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles

Qben
quelle
5

Wie andere Benutzer hier über die Verwendung der Anweisung allowoveride erklärt haben, mit der die Berechtigung zur Verwendung von .htaccess erteilt wird. Ich möchte darauf hinweisen, dass niemals allowoverride all verwendet wird, wenn andere Benutzer Zugriff auf das Schreiben von .htaccess haben. Verwenden Sie stattdessen allowoveride, um bestimmte Module zuzulassen.

Wie AllowOverride AuthConfig mod_rewriteanstelle von

AllowOverride All

Weil ein Modul wie mod_mime Ihre serverseitigen Dateien als einfachen Text rendern kann.

Abhishek Gurjar
quelle
1
DANKE!! Genau das habe ich gesucht. Ich wollte windwalker.com.au zu windwanderer.com.au umleiten und musste diese Anweisung in einer .htaccess-Datei und NICHTS MEHR zulassen. Wenn Sie AllowOverride ALL immer signifikant setzen, wird die Sicherheit meiner Server verringert.
Jesse der
1

Ich bin auch auf dieses Problem gestoßen und habe die Lösung wie folgt gefunden: 1. Im Sites-fähigen Ordner von Apache2 bearbeiten Sie das Verzeichniselement, indem Sie "AllowOverride all" festlegen (sollte "all" und nicht "none" sein) 2. Benennen Sie im kohana-Projekt im Ordner www "example.htaccess" in ".htaccess" um.

Ich habe es auf Ubuntu gemacht. Hoffe, dass es dir helfen wird.

Quang Le
quelle
0

SuSE Linux Enterprise Server

Stellen Sie sicher, dass Sie die richtige Datei https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html bearbeiten

httpd.conf

Die Hauptkonfigurationsdatei des Apache-Servers. Vermeiden Sie es, diese Datei zu ändern. Es enthält hauptsächlich Include-Anweisungen und globale Einstellungen. Überschreiben Sie die globalen Einstellungen in den hier aufgeführten relevanten Konfigurationsdateien. Ändern Sie hostspezifische Einstellungen (z. B. Dokumentstamm) in Ihrer virtuellen Hostkonfiguration .

In diesem Fall vhosts.d/*.confmuss bearbeitet werden

Rolltreppe
quelle
0

Außerdem wurden bei diesen optimierten Antworten manchmal dieselben Fehler aufgrund nicht übereinstimmender und unterschiedlicher Einstellungen in einem SSLTeil der Webserverkonfigurationen angezeigt . (Offensichtlich, wenn keine .htaccessDatei verwendet wird).

Mojtaba Rezaeian
quelle