Estoy ejecutando un servidor LAMP en Fedora 13 que funciona bien; sin embargo, acabo de agregar un archivo ".htaccess" a la carpeta docroot de mi sitio actual que se ignora por completo.
He probado media docena de pruebas diferentes, incluida esta:
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php
Pero las imágenes y todas las demás páginas se cargan bien, y los archivos inexistentes siguen siendo 404. También probé esto:
order deny,allow
deny from all
Pero cada página todavía se carga bien. Nuevamente, el archivo .htaccess simplemente se ignora al 100%.
Ponemos nuestros registros de host virtual en /etc/httpd/conf.d/virtual.conf. Se parece a esto:
NameVirtualHost *
<VirtualHost *>
ServerName intranet
DocumentRoot /var/www/default
<Directory "/var/www/default">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *>
ServerName ourwebsite.com
DocumentRoot /var/www/html/ourwebsite.com/docroot
<Directory "/var/www/html/ourwebsite.com/docroot">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
¿Qué más podría estar causando que nuestro servidor IGNORE completamente el .htaccess
archivo?
Editar:
Cambié el archivo .htaccess a arriba para demostrar mejor que mis cambios están siendo ignorados. Tenga en cuenta que probé exactamente el mismo archivo .htaccess en el servidor de producción y funcionó bien.
Edición 2:
OK, tengo nueva información! Solo para fines de prueba, revisé y cambié temporalmente TODAS las directivas "AllowOverride" a AllowOverride All
. Descubrí que la primera entrada del Directorio parece dominar a todas las demás:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Cuando cambié eso a AllowOverride All
, mis archivos .htaccess comienzan a tener efecto. ¡Es como si AllowOverride All
se ignoraran todas las demás directivas en mis archivos de configuración!
¿¿Lo que da??
fuente
Compruebe si hay otro "AllowOverride None" presentado en 'httpd.conf' arriba de la declaración de virtualhosts. Probablemente, tenga "AllowOverride None" en docroot.
fuente
dev.
. Sin embargo, el servidor de producción funciona bien, los archivos .htaccess se comportan exactamente como se esperaba, y el servidor de desarrollo simplemente ignora el archivo .htaccess por completo.Tres conjeturas:
¿Existe en realidad un espacio después de la coma en la línea
order deny, allow
de.htaccess
? A Apache no le gusta eso. Para mí en F13 obtuve 500.¿Tienes una
AccessFileName
directiva en alguna parte?Si está utilizando selinux, ¿tiene el contexto correcto para el archivo (
ls -lZ
)?fuente
AccessFileName
, miraré a mi alrededor, pero como dije en mi comentario sobre la respuesta de Denis, la configuración de apache para estos dos servidores es efectivamente idéntica.AccessFileName .htaccess
Tuve esto en un servidor nuevo, eventualmente me di cuenta de que mod-rewrite no estaba habilitado por defecto.
fuente