¿Cómo habilitar mod_rewrite en Apache?

165

Acabo de instalar la pila LAMP en mi sistema Ubuntu.

La redirección no está funcionando para mí. No se como arreglarlo. ¿Alguien puede ayudarme?

vinoth
fuente
3
En mi humilde opinión, esta pregunta no es específica de Ubuntu y debe migrarse a Server Fault .
Paolo
2
El OP instaló la lámpara en UBUNTU. ¿Cuánto más específico de Ubuntu quieres?
wojox
1
@wojov: No sé sobre este caso, pero ese argumento no funciona. "¿Cómo puedo usar esta aplicación (en Ubuntu)?" son en su mayoría fuera de tema.
23
Este no es un "Cómo puedo usar la aplicación", sino un "cómo habilitar una función específica en Ubuntu". Apache bajo Ubuntu utiliza un diseño de configuración diferente en el que cada módulo y host virtual es un archivo /etc/apache2y que se puede habilitar mediante a2*programas.
Lekensteyn
Debe describir lo que ha hecho para reducir el problema,
ericn

Respuestas:

239

Para habilitar el módulo de reescritura, ejecute "apache2 enable module rewrite":

sudo a2enmod rewrite

Debe reiniciar el servidor web para aplicar los cambios:

sudo service apache2 restart

Si planea usar mod_rewrite en .htaccessarchivos, también debe habilitar el uso de .htaccessarchivos cambiando AllowOverride Nonea AllowOverride FileInfo. Para el sitio web predeterminado, edite /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Después de tal cambio, debe reiniciar Apache nuevamente.

Lekensteyn
fuente
18
Tuve más éxito con AllowOverride All
Valentin Despa
¡Gracias! sudo a2enmod rewritey FileInfome lo arregló!
d -_- b
22
Para mí, ese archivo era /etc/apache2/apache2.conf donde encontré esa entrada de configuración
doc_id
Sí, hacer los dos cambios solucionó el problema.
Adelin
No está funcionando para mí. Publiqué
Suhail Gupta
49

Me atrevo a agregar una respuesta especial (como continuación de la gran respuesta anterior) con respecto a ubuntu 14.04 y .htaccess:

En 14.04, el nombre del archivo de configuración predeterminado se cambia a 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

agregue lo siguiente al final del archivo:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Por alguna razón, en Ubuntu 14.04 y apache2 la raíz está configurada en /www/html. Si desea cambiar la raíz del servidor web de nuevo a la vieja /www, open 000-default.confy el cambio

DocumentRoot /var/www/html/

a

DocumentRoot /var/www/

y luego, por supuesto, debería ser

<Directory "/var/www">
    AllowOverride All
</Directory>
davidkonrad
fuente
1
Gracias por la información! Esta / nueva forma podemos usar www como carpeta donde colocamos todos los sitios web, y html es por defecto "sitio web" para localhost. Puede ser importante si está jugando con la apertura de puertos al mundo, de esta manera su localhost no puede ver carpetas de otros proyectos.
Vladimir Vukanac
1
No está funcionando para mí. Estoy usando Ubuntu 14.04.4 LTS
Suhail Gupta