Jak włączyć korzystanie z .htaccess w Apache na Ubuntu?


15

Usiłuję włączyć używanie pliku htaccess w Ubuntu 14.04 (Apache 2.4.7). Wiem, że to pytanie ma wiele możliwych duplikatów, ale żadne z nich jeszcze mi nie pomogło.

.htaccess

ErrorDocument 404 /404.html

000-default.conf

<VirtualHost *:80>
AccessFileName .htaccess

ServerAdmin webmaster@localhost
DocumentRoot /var/www

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/>
  Options Indexes FollowSymLinks Includes
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>

Co jeszcze jest potrzebne?


1
Dyrektywa AllowOverride All zezwala na wszystkie opcje w pliku .htaccess. 000-default.conf zakłada, że ​​na serwerze jest tylko jedna witryna. Czy plik .htaccess nie działa dla Ciebie? Czy na tym serwerze znajduje się więcej niż jedna witryna?
closetnoc

Istnieje wiele folderów w / var / www, ale nie są tworzone wirtualne hosty. / etc / apache2 / sites-available / folder zawiera dwa pliki, 000-default.conf i default-ssl.conf. Plik htaccess znajduje się w / var / www /
David ZIP

Może „DocumentRoot / var / www /”? (końcowy ukośnik)
Kovah

Sprawdź, czy plik / etc / apache2 / sites-enabled / zawiera link do 000-default.conf. Jeśli zmienisz plik /var/www/index.html, możesz zobaczyć zmiany podczas przeglądania serwera za pomocą przeglądarki internetowej, prawda?
Stephen Ostermiller

Odpowiedzi:


26

Pierwszy krok

Otwórz plik jako

sudo vim /etc/apache2/apache2.conf

Drugi krok

usuń znak komentarza (#), jeśli znajdziesz go przed tym wierszem (numer wiersza około 187)

AccessFileName .htaccess

Trzeci krok

Następnie znajdź linię, w której jest

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

zamień „Brak” na „Wszystko”

AllowOverride All

I voila ... .htaccessdziała !!


3
zmiany nie obowiązywały, dopóki nie zrestartowałem apache Polecenie: restart apache usługi
Tahir Yasin

1
Sugeruję, jak wspomina @TahirYasin, ponowne uruchomienie apache. sudo service apache2 restart.
www139


1

W moim przypadku zmienia AllowOverride Nonesię AllowOverride Allw /etc/apache2/sites-enabled/000-default.conf pomogło.

Wszystkie inne pliki .conf już miały AllowOverride All.


0
  1. W /etc/apache2/apache2.conf usuń znak komentarza ( #) zAccessFileName .htaccess
  2. Nazwa pliku konfiguracyjnego Apache nie jest standardowa. Możesz zmienić nazwę na default.conf w systemie Windows i zmienić nazwę na default w Linux. W systemie operacyjnym Linux uruchom ten kod w terminalu:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default
    

Nazywa się go zerami, więc najpierw jest alfabetycznie. Jeśli masz plik default.conf, a następnie utworzysz witrynę dla anteater.com, wówczas anteater staje się domyślnym hostem, ponieważ jest ładowany jako pierwszy. Zachowaj 000, aby zapobiec takim problemom. Nazwa pliku conf nie powinna mieć nic wspólnego z tym, czy .htaccess działa.
Stephen Ostermiller

1
„AccessFileName .htaccess” nie jest już komentowany. Powyższa odpowiedź pomogła mi. Dzięki.
David ZIP
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.