Jak ustawić AllowOverride all

161

Chcę ustawić, AllowOverride allale nie wiem, jak to zrobić. Znalazłem następujący kod, przeszukując google i wklejając go .htaccess:

<Directory>
        AllowOverride All
</Directory>

Ale po wklejeniu zacząłem otrzymywać "Internal Server Error"

Czy ktoś może mi pomóc, gdzie umieścić ten kod lub jak to zrobić?

Munib
źródło
3
<Directory>Dyrektywa wymaga argumentu ścieżki.
FKEinternet

Odpowiedzi:

317

Jeśli korzystasz z Ubuntu, edytuj plik /etc/apache2/apache2.conf(tutaj mamy przykład /var/www):

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

i zmień to na;

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

następnie,

sudo service apache2 restart

Konieczne może być również sudo a2enmod rewritewłączenie przepisywania modułu.

Naveed
źródło
55
Musiałem też użyć sudo a2enmod rewrite, wtedy zadziałało. W systemie Ubuntu 14.04 LTS. Mam nadzieję, że komuś się przyda.
Jonauz
2
Dziwne ... kiedy to robię, otrzymuję wewnętrzny błąd serwera. Czy to oznacza błąd w pliku .htaccess znajdującym się pod adresem /var/www/.htaccess? Przełączenie apache2, conf z powrotem na AllowOverride None naprawia błąd, ale nie pozwala na przepisywanie adresu URL.
o_O
W Ubuntu 12.04. Znalazłem ten plik w / etc / apache2 / sites-available / default path
عثمان غني
Jak mogę to zmienić w oddzielnym pliku? Widzę, że IncludeOptional conf-enabled/*.confw ostatnim wierszu mojego apache2.confpliku znajduje się. Ale wydaje się, że apache2.confzamiast tego jest traktowany priorytetowo.
JohnnyQ,
To robi za mnie magię. Po zaktualizowaniu mojego firmowego serwera Debian z wydania wheezy do wydania jessie, wszystko w apache przestało działać i po dodaniu tego wszystkiego wszystko zaczęło działać ponownie.
periket2000
51

Głównym celem AllowOverridemenedżera głównych plików konfiguracyjnych Apache (tego znajdującego się w / etc / apache2 / głównie) jest decydowanie, która część konfiguracji może być dynamicznie zmieniana przez aplikacje na podstawie ścieżki.

Jeśli nie jesteś administratorem serwera, jesteś zależny od poziomu AllowOverride, na który ci administratorzy zezwalają. Aby mogli uniemożliwić zmianę niektórych ważnych ustawień zabezpieczeń;

Jeśli jesteś głównym menedżerem konfiguracji Apache, powinieneś zawsze używać AllowOverride Nonei przenosić wszystkie znalezione przykłady oparte na google_based, oparte na plikach .htaccess, do Directorysekcji w głównych plikach konfiguracyjnych. Ponieważ zawartość .htaccesspliku .htaccess /my/path/to/a/directoryjest taka sama jak <Directory /my/path/to/a/directory>instrukcja, z tym wyjątkiem, że .htaccessdynamiczna zmiana konfiguracji na żądanie HTTP spowalnia Twój serwer WWW. Zawsze preferuj konfigurację statyczną bez .htaccesssprawdzania (unikniesz również ataków na bezpieczeństwo poprzez .htaccessmodyfikacje).

Nawiasem mówiąc, w twoim przykładzie używasz <Directory>i zawsze będzie to błędne, instrukcje katalogu zawsze zawierają ścieżkę, na przykład <Directory />lub <Directory C:>lub <Directory /my/path/to/a/directory>. I oczywiście nie można tego umieścić w a, .htaccessponieważ a .htaccessjest jak instrukcja Directory, ale w pliku obecnym w tym katalogu. Oczywiście nie można zmieniać AllowOverridew sposób .htaccessjak ta instrukcja jest zarządzanie poziom zabezpieczeń z .htaccessplików.

regilero
źródło
17

Idź do your_severpath/apache_ver/conf/ Otwórz plik httpd.confw Notatniku.

Znajdź tę linię:

#LoadModule vhost_alias_module modules / mod_vhost_alias.so

Usuń symbol krzyżyka:

LoadModule vhost_alias_module moduły / mod_vhost_alias.so

Następnie idź do <Directory />

i zmień na:

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

Następnie zrestartuj lokalny serwer.

Achintya Nayak
źródło
Zadanie wykonane! Ty Sir!
James Walker,
6
Uwaga Order allow,denyi Allow from allsą przeznaczone dla Apache 2.2 i wcześniejszych. W Apache 2.4 te dwie linie są zastępowane przez, Require all grantedjak pokazano w innych odpowiedziach.
FKEinternet
13

W systemie Linux, aby zwolnić dostęp do katalogu głównego dokumentu, należy edytować następujący plik:

/etc/httpd/conf/httpd.conf

W zależności od poziomu katalogu, do którego chcesz zwolnić dostęp, musisz zmienić dyrektywę

AllowOverride None

do

AllowOverride All

Więc zakładając, że chcesz zezwolić na dostęp do plików w katalogu / var / www / html, powinieneś zmienić następujące wiersze z:

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

do

<Directory "/var/www/html">
 AllowOverride All
</Directory>
Javier La Banca
źródło
8
i zrestartuj serwer po
Daniel
Po stukrotnym dwukrotnym sprawdzeniu moich .htacces - to było rozwiązanie! Dziękuję Ci bardzo. Pomyślałem, że „all” to domyślna wartość konfiguracji Apache.
Matthias Kleine
Wspominanie o Linuksie w twojej odpowiedzi też nie jest dobre. Chociaż to jest stare, chcę tylko wyjaśnić, że to, co mówisz, dotyczy dystrybucji opartych na Redhat
Chi.CJRajeeva Lochana
11

Jeśli używasz Linuksa, możesz edytować kod w katalogu

/etc/httpd/conf/httpd.conf

teraz tutaj znajdź linię kodu podobną do

# 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>

Zmień AllowOveride None na AllowOveride All

Teraz możesz ustawić dowolną regułę w swoim pliku .httacess w swoich katalogach, jeśli inny system operacyjny po prostu spróbuje znaleźć plik httpd.conf i go edytować.

SAR
źródło
Od 2015Nov18 1539 PST, kiedy wyszukuję w Google hasło „allowoverride”, nad wynikami wyszukiwania widzę okienko, które pokazuje: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
boot13
5

Jak wyjaśnili tu inni użytkownicy o zastosowaniu dyrektywy allowoveride, która jest używana do nadawania uprawnień do używania .htaccess. jedną rzeczą, na którą chcę zwrócić uwagę, jest to, że nigdy nie używaj allowoverride all, jeśli inni użytkownicy mają dostęp do zapisu .htaccess, zamiast tego użyj allowoveride, aby zezwolić na określone moduły.

Takich jak AllowOverride AuthConfig mod_rewriteZamiast

AllowOverride All

Ponieważ moduł taki jak mod_mime może renderować pliki po stronie serwera jako zwykły tekst.

Abhishek Gurjar
źródło
1
DZIĘKUJĘ CI!! To jest dokładnie to, czego szukałem. Chcę przekierować windwalker.com.au na windwanderer.com.au, więc musiałem zezwolić na tę dyrektywę w pliku .htaccess i NIC WIĘCEJ. Zawsze umieszczanie AllowOverride ALL w znaczący sposób zmniejsza bezpieczeństwo moich serwerów.
Jesse the Wind Wanderer,
1

Również napotykam ten problem i znalazłem rozwiązanie w 2 krokach poniżej: 1. W folderze z włączoną obsługą witryn w apache2 edytujesz w elemencie Directory ustawiając „AllowOverride all” (powinno być „all”, a nie „none”) 2. W projekcie kohana w folderze www zmień nazwę „example.htaccess” na „.htaccess”

Zrobiłem to na ubuntu. Mam nadzieję, że to ci pomoże.

Quang Le
źródło
0

SuSE Linux Enterprise Server

Upewnij się, że edytujesz właściwy plik https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

Główny plik konfiguracyjny serwera Apache. Unikaj zmiany tego pliku. Zawiera przede wszystkim instrukcje dołączania i ustawienia globalne. Zastąp ustawienia globalne w odpowiednich plikach konfiguracyjnych wymienionych tutaj. Zmień ustawienia specyficzne dla hosta (takie jak katalog główny dokumentu) w konfiguracji hosta wirtualnego .

W takim przypadku vhosts.d/*.confnależy je edytować

ruchome schody
źródło
0

Poza tym te poprawne odpowiedzi, które zostały zatwierdzone, czasami mogą być widoczne ten sam błąd z powodu niedopasowanych i różnych ustawień w SSLczęści konfiguracji serwera internetowego . (Oczywiście, gdy nie używasz .htaccesspliku).

Mojtaba Rezaeian
źródło