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?

David ZIP
źródło
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 !!

Indygowiec
źródło
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
7

Aktywuj ModRewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Eder Araujo de Souza
źródło
1
serviceKomenda jest obecnie preferowany sposób, aby ponownie uruchomić Apache: sudo service apache2 restart.
Stephen Ostermiller
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.

Lyubov Zhurba
źródło
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
    
Huseyin
źródło
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