¿Cómo habilitar el uso de .htaccess en Apache en Ubuntu?

15

Estoy tratando de habilitar el uso del archivo htaccess en Ubuntu 14.04 (Apache 2.4.7). Sé que esta pregunta tiene muchos posibles duplicados, pero ninguno de ellos me ayudó aún.

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

¿Qué más se necesita?

David ZIP
fuente
1
La directiva AllowOverride All permite todas las opciones en el archivo .htaccess. 000-default.conf asume que solo hay un sitio en su servidor. ¿El archivo .htaccess no funciona para usted? ¿Hay más de un sitio alojado en este servidor?
closetnoc
Hay muchas carpetas en / var / www pero no se crean hosts virtuales. La carpeta / etc / apache2 / sites-available / contiene dos archivos, 000-default.conf y default-ssl.conf. El archivo htaccess se encuentra en / var / www /
David ZIP
Tal vez 'DocumentRoot / var / www /'? (barra final)
Kovah
Verifique para asegurarse de que / etc / apache2 / sites-enabled / contiene un enlace a 000-default.conf. Si cambia el archivo /var/www/index.html, puede ver los cambios cuando ve el servidor con un navegador web, ¿verdad?
Stephen Ostermiller

Respuestas:

26

Primer paso

Abrir archivo como

sudo vim /etc/apache2/apache2.conf

Segundo paso

elimine el signo de comentario (#) si lo encuentra antes de esta línea (número de línea 187 aprox.)

AccessFileName .htaccess

Tercer paso

Luego encuentra la línea donde hay

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

reemplace "Ninguno" con "Todos"

AllowOverride All

Y voila ... .htaccessfunciona !!

Añil
fuente
3
los cambios no entraron en vigencia hasta que reinicié Apache Command: service apache restart
Tahir Yasin
1
Sugiero, como menciona @TahirYasin, reiniciar apache. sudo service apache2 restart.
www139
7

Activar ModRewrite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Eder Araujo de Souza
fuente
1
El servicecomando es ahora la forma preferida para reiniciar Apache: sudo service apache2 restart.
Stephen Ostermiller
1

En mi caso el cambio AllowOverride NoneaAllowOverride All en /etc/apache2/sites-enabled/000-default.conf ayudó.

Todos los demás archivos .conf ya han tenido AllowOverride All.

Lyubov Zhurba
fuente
0
  1. En /etc/apache2/apache2.conf elimine el signo de comentario (# ) deAccessFileName .htaccess
  2. El nombre de su archivo de configuración de Apache no es estándar. Puede cambiarle el nombre a default.conf en Windows y cambiarle el nombre a default en Linux. En el sistema operativo basado en Linux, ejecute este código en la terminal:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default
    
Huseyin
fuente
Se nombra con ceros para que aparezca primero alfabéticamente. Si tiene un archivo default.conf y luego crea un sitio para anteater.com, entonces anteater se convierte en el host predeterminado porque se carga primero. Guarde el 000 para evitar tales problemas. El nombre del archivo conf no debería tener nada que ver con si funciona o no .htaccess.
Stephen Ostermiller
1
'AccessFileName .htaccess' ya no está comentado. La respuesta anterior me ayudó. Gracias.
David ZIP