php - htaccess - mod_rewrite ubuntu server
Cómo habilitar.htaccess en amazon ec2 ejecutando ubuntu (3)
Tengo una instancia ejecutando ubuntu en ec2. Tengo este archivo .htaccess: -
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}/.php -f
RewriteRule ^(.*)$ $1.php
Este archivo se encuentra dentro de la carpeta var/www/html
. amazon-public-dns.com/index.php
objetivo es lograr la carga de amazon-public-dns.com/index.php
como amazon-public-dns.com/index
.
Ahora, he intentado estos pasos:
1) Creando el rewrite.conf
en /etc/apache2/mods-enabled
y en el archivo poniendo la línea LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
. ( Referir esta respuesta )
2) Ejecutando el comando apache2 enable module rewrite
. Además, en el archivo /etc/apache2/sites-available/000-default.conf
y escribiendo esto al final: -
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
# changed from None to FileInfo
AllowOverride All
Order allow,deny
allow from all
</Directory>
Tenga en cuenta que esta respuesta le dice que edite el default
. Pero, como ese archivo no estaba en mi caso, 000-default.conf
archivo 000-default.conf
.
Reinicié Apache como se lo dije. Pero el enlace amazon-public-dns.com/index
me da un 404 :( Por favor, amazon-public-dns.com/index
.
EDITAR : Puse un poco de basura al azar en el archivo htaccess. Pero el index.php no está dando ningún error interno del servidor 500, lo que significa que el archivo htaccess está siendo ignorado. Ahora en
https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles
, dicen que para habilitar htaccess edite este archivo - /etc/apache2/sites-available/default
. PERO NO HAY TAL ARCHIVO
El archivo conf predeterminado /etc/apache2/sites-available/000-default.conf solo funciona si tiene un enlace simbólico en la carpeta de sitios habilitados.
Has hecho todos los pasos correctos. Puede ser un problema de sysmlink de la carpeta de sitios disponibles. Puede crear un enlace simbólico o actualizar 000-default.conf con AllowOverride None
para AllowOverride All
dentro del archivo /etc/apache2/sites-enabled/000-default.conf
Hoy me enfrenté a este mismo problema en una instancia de ubuntu EC2.
Esto funcionó para mí:
Coloque su configuración .htaccess
dentro de la directiva <IfModule ..>
:
<IfModule mod_rewrite.c>
RewriteEngine on
# your config here
</IfModule>
No estoy seguro de si el servidor realmente tiene en cuenta /var/www/html
. Intenta cambiar esto:
<Directory /var/www/html>
# your current implementation
AllowOverride All
</Directory>
Para este:
<Directory /var/www>
# your current implementation
AllowOverride All
</Directory>
Esta directiva ya debería estar en su archivo /etc/apache2/apache2.conf
.
Si eso no funciona, trate de comentar su configuración, particularmente la parte que tiene allow,deny
y allow from all
<Directory /var/www>
# your current implementation
AllowOverride All
# Order allow,deny # try to comment this one out
# allow from all # also this one
</Directory>
Por último, compruebe que el módulo de reescritura a2enmod
esté cargado como lo sugiere @ kamal-kumar y no olvide reiniciar apache.
Esto funcionó para mí, espero que esto ayude a alguien más :)
el siguiente comando funciona para mí ¡Genial!
sudo a2enmod rewrite
sudo service apache2 restart
Para verificar los módulos cargados
sudo apache2ctl -M