W prawie każdym rozwiązaniu „Jak aktywować htaccess” mówią, że plik / etc / apache2 / sites-available / default wymaga edycji. Ale takiego pliku nie ma w Apache 2.4.7
Czytałem gdzieś, że nowy domyślny plik to 000-default.conf. Więc edytowałem ten i próbowałem dodać wiersz:
AllowOverride All
Ale Apache2 nie uruchomił się ponownie poprawnie i dał błąd. Z dokumentacji apache2 wynika, że AllowOverride jest dozwolony tylko w <Directory>
sekcji. Potem próbowałem dodać to:
<Directory "/var/www">
AllowOverride All
</Directory>
I to wydaje się działać. Ale nie jestem pewien, czy powinienem tam umieścić / var / www. Czy to właściwy sposób, czy mój komputer jakoś wysadzi?
apache2
configuration
.htaccess
CluelessNoob
źródło
źródło
Odpowiedzi:
tl; dr
Tak, to właściwy sposób.
Ale aby być bardziej semantycznym : Tak, jest to właściwy sposób, aby zezwolić
.htaccess
na zastąpienie wszystkich dyrektyw w/var/www
katalogu.Jak się dowiedziałeś,
AllowOverride
dozwolone jest tylko wDirectory
sekcji.Na twoim przykładzie:
Mówi to Apache, że wszystkie konfiguracje można przesłonić we
/var/www
wszystkich jego podkatalogach (rekurencyjnie).Aby uzyskać lepszy przykład, weź pod uwagę, że na wirtualnym hoście masz następującą konfigurację:
I następująca struktura katalogów:
To, co tutaj zrobiłem, to utworzenie
.htaccess
w każdym podkatalogu/var/www
katalogu.Zwykle nie powinno tak być, ale tylko dla przykładu
Porównując strukturę katalogów z konfiguracją, oznacza to, że wszystkie
.htaccess
pliki w/var/www
folderze i jego podkatalogach, z wyjątkiem/var/www/uploads
katalogu i jego podkatalogów, mogą zastępować wszelkiego rodzaju dyrektywy.Ale
/var/www/uploads
i jego podkatalogów mogą używać tylko.htaccess
plik, aby zastąpićAllow
,Deny
iOrder
wskazówki.Uwaga: Od wersji Apache 2.4 (która jest domyślnie dostępna w wersji 13.10+)
Allow
, dyrektywyDeny
iOrder
zostały zastąpione jedną dyrektywą o nazwieRequire
.źródło
Najpierw włącz przepisywanie za pomocą tego polecenia:
Następnie uruchom ponownie Apache2:
Następnie przejdź do
sites-available
folderu:Edytuj nazwany plik
default
i zmieńAllowOverride none
naAllowOverride All
. Istnieją dwie linie, w których należy wprowadzić tę zmianę.To sprawi, że będzie
.htaccess
działać na twoim serwerze VPS.To działało na Ubuntu 12.04.5 VPS.
źródło
default
plik jest wywoływany000-default.conf
i nie zawieraAllowOverride None
wiersza.000-default.conf
i nie można goAllowOverride None
tutaj dodać , jeśli przeładujesz apache, podaj błąd.htaccess
, lepiej użyćAllowOverride FileInfo
. Chociaż FileInfo zawiera już duży zestaw dyrektyw, nadal ograniczałoby się zastępowanie wielu dyrektyw.W moim przypadku działało to tak:
musiałem dodać następujące wiersze:
Wygląda to tak:
źródło
Oto fragment, jak włączyć htaccess w Apache 2.4 bez zmiany domyślnej konfiguracji:
źródło