Wie kann ich die Verwendung von .htaccess in Apache unter Ubuntu aktivieren?

15

Ich versuche, die Verwendung der htaccess- Datei in Ubuntu 14.04 (Apache 2.4.7) zu aktivieren. Ich weiß, dass diese Frage viele mögliche Duplikate hat, aber keine von ihnen hat mir bis jetzt geholfen.

.zugang

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>

Was wird noch benötigt?

David ZIP
quelle
1
Die AllowOverride All-Direktive lässt alle Optionen in der .htaccess-Datei zu. In der 000-default.conf wird davon ausgegangen, dass sich nur eine Site auf Ihrem Server befindet. Funktioniert die .htaccess-Datei nicht für Sie? Gibt es mehr als eine Site, die auf diesem Server gehostet wird?
Closetnoc
Es gibt viele Ordner in / var / www, aber es werden keine virtuellen Hosts erstellt. Der Ordner / etc / apache2 / sites-available / enthält zwei Dateien, 000-default.conf und default-ssl.conf. Die htaccess-Datei befindet sich in / var / www /
David ZIP
Vielleicht 'DocumentRoot / var / www /'? (
abschließender
Stellen Sie sicher, dass / etc / apache2 / sites-enabled / einen Link zu 000-default.conf enthält. Wenn Sie die Datei /var/www/index.html ändern, können Sie die Änderungen sehen, wenn Sie den Server mit einem Webbrowser anzeigen, oder?
Stephen Ostermiller

Antworten:

26

Erster Schritt

Datei öffnen als

sudo vim /etc/apache2/apache2.conf

Zweiter Schritt

Kommentarzeichen (#) entfernen, wenn Sie es vor dieser Zeile finden (Zeilennummer ca. 187)

AccessFileName .htaccess

Dritter Schritt

Dann finde die Linie, wo es ist

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

ersetze "None" durch "All"

AllowOverride All

Und voila ... .htaccessfunktioniert !!

Anil
quelle
3
Die Änderungen wurden erst nach einem Neustart von Apache wirksam. Befehl: service apache
Tahir Yasin
1
Ich schlage vor, wie @TahirYasin erwähnt, Apache neu zu starten. sudo service apache2 restart.
www139
7

Aktiviere ModRewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Eder Araujo de Souza
quelle
1
Der serviceBefehl ist jetzt der bevorzugte Weg , Apache neu zu starten: sudo service apache2 restart.
Stephen Ostermiller
1

In meinem Fall den Wechsel AllowOverride Nonezu AllowOverride Allin /etc/apache2/sites-enabled/000-default.conf geholfen.

Alle anderen .conf- Dateien haben bereits gehabt AllowOverride All.

Lyubov Zhurba
quelle
0
  1. Entfernen Sie in /etc/apache2/apache2.conf das Kommentarzeichen ( #) vonAccessFileName .htaccess
  2. Der Name Ihrer Apache-Konfigurationsdatei ist nicht Standard. Sie können es in Windows in default.conf und in Linux in default umbenennen . In Linux-basierten Betriebssystemen führen Sie diesen Code im Terminal aus:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default
    
Huseyin
quelle
Es wird mit den Nullen benannt, sodass es alphabetisch an erster Stelle steht. Wenn Sie eine default.conf-Datei haben und dann eine Site für anteater.com erstellen, wird anteater zum Standardhost, da es zuerst geladen wird. Bewahren Sie die 000 auf, um solche Probleme zu vermeiden. Der Name der conf-Datei sollte nichts damit zu tun haben, ob .htaccess funktioniert oder nicht.
Stephen Ostermiller
1
'AccessFileName .htaccess' ist bereits unkommentiert. Die obige Antwort hat mir geholfen. Vielen Dank.
David ZIP