
En casi todas las soluciones de "Cómo activar htaccess", dicen que es necesario editar el archivo /etc/apache2/sites-available/default. Pero no existe ese archivo en Apache 2.4.7
Leí en alguna parte que el nuevo archivo predeterminado es 000-default.conf. Así que lo edité e intenté agregar la línea:
AllowOverride All
Pero Apache2 no se reinició correctamente y dio un error. En la documentación de Apache2, descubrí que AllowOverride solo está permitido en la <Directory>
sección. Luego intenté agregar esto:
<Directory "/var/www">
AllowOverride All
</Directory>
Y esto parece funcionar. Pero no estoy seguro de si debería haber puesto /var/www allí. ¿Es una forma correcta de hacerlo o mi computadora explotará de alguna manera?
Respuesta1
tl; dr
Sí, es la forma correcta.
Pero para ser mássemántico: Sí, es la forma correcta de permitir .htaccess
anular todas las directivas en el /var/www
directorio.
Como lo descubriste,AllowOverride
está permitido sólo bajo la Directory
sección.
Usando tu ejemplo:
<Directory "/var/www">
AllowOverride All
</Directory>
Esto le dice a Apache que todas las configuraciones se pueden anular en /var/www
y en todos sus subdirectorios (recursivamente).
Para un mejor ejemplo, considere que tiene la siguiente configuración en su host virtual:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
Y la siguiente estructura de directorios:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
Lo que hice aquí fue crear un .htaccess
en cada subdirectorio del /var/www
directorio.
Normalmente no debería ser así, pero esto es sólo por el ejemplo.
Comparar la estructura del directorio con la configuración, significa que todos .htaccess
los archivos dentro de la /var/www
carpeta y sus subdirectorios, excluyendo el /var/www/uploads
directorio y sus subdirectorios, pueden anular todo tipo de directivas.
Pero /var/www/uploads
y sus subdirectorios solo pueden usar el .htaccess
archivo para anular las Allow
directivas y Deny
.Order
Nota: A partir de Apache 2.4 (que está disponible de forma predeterminada en 13.10+) Allow
, las directivas Deny
y Order
fueron reemplazadas por una única directiva denominada Require
.
Respuesta2
Primero habilite la reescritura usando este comando:
sudo a2enmod rewrite
Luego reinicie apache2:
sudo service apache2 restart
Luego ve a la sites-available
carpeta:
/etc/apache2/sites-available
Edite el archivo nombrado default
y cámbielo AllowOverride none
a AllowOverride All
. Hay dos líneas donde se debe realizar este cambio.
Esto hará que .htaccess
funcione en su servidor VPS.
Esto funcionó en un VPS Ubuntu 12.04.5.
Respuesta3
En mi caso funcionó así:
tuve que agregar las siguientes líneas:
Order allow, deny
Allow from all
Entonces se ve así:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
Respuesta4
Un problema común que encontré en estos tutoriales es que no hay ningún archivo default.conf en
/etc/apache2/sites-available
Pude encontrar el lugar para cambiarlo, pero era el archivo apache2.conf aquí
/etc/apache2/apache2.conf
No estoy realmente seguro de si es una buena idea, pero funcionó para mí y en el entorno en el que me encuentro es seguro.