.htaccess no funciona apache

Tengo un servidor del servicio AWS EC2 que se ejecuta en Linux ubuntu y he instalado apache, php y mysql.

He agregado un archivo .htaccess en mi documento raíz /var/www/html .

ErrorDocument 404 /var/www/html/404.php este código en él: ErrorDocument 404 /var/www/html/404.php y aún no aparece.

Seguí ingresando este comando varias veces: el sudo service httpd restart para reiniciar el servidor pero no se muestran cambios …

¿Cómo puedo solucionar esto … Hice algo mal?

¡Gracias por adelantado!

Primero, tenga en cuenta que reiniciar httpd no es necesario para los archivos .htaccess. Los archivos .htaccess son específicamente para personas que no tienen root, es decir, no tienen acceso al archivo de configuración del servidor httpd y no pueden reiniciar el servidor. Como puede reiniciar el servidor, no necesita archivos .htaccess y puede usar la configuración del servidor principal directamente.

En segundo lugar, si se están ignorando los archivos .htaccess, debe verificar que AllowOverride esté configurado correctamente. Consulte http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride para obtener más información. También debe asegurarse de que esté configurado en el ámbito correcto, es decir, en el bloque derecho de su configuración. Asegúrate de NO estar editando el que está en el bloque, por ejemplo.

En tercer lugar, si desea asegurarse de que se está leyendo realmente un archivo .htaccess, coloque la basura en él. Una línea no válida, como “LÍNEA NO VÁLIDA AQUÍ”, en su archivo .htaccess, generará un error de 500 Server cuando apunte su navegador al directorio que contiene ese archivo. Si no lo hace, entonces no tiene AllowOverride configurado correctamente.

  1. Habilitar el módulo mod_rewrite de Apache

    a2enmod rewrite

  2. agregue el siguiente código a /etc/apache2/sites-available/default

    AllowOverride All

  3. Reiniciar Apache

    /etc/init.d/apache2 restart

Si ha intentado todo lo anterior, que son todas respuestas válidas y buenas, y su archivo htaccess no funciona o no se lee, cambie la directiva en el archivo apache2.conf . En Ubuntu, la ruta es /etc/apache2/apache2.conf

Cambie la que apunta a sus páginas web públicas, donde reside el archivo htaccess. Cambiar de AllowOverride None a AllowOverride All

  Options Indexes FollowSymLinks AllowOverride All Require all granted  

Tuve el mismo problema y encontré la respuesta y la explicación en Ubuntu Ask. foro https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

Para Ubuntu,
Primero, ejecuta este comando: –

 sudo a2enmod rewrite 

Luego, edite el archivo /etc/apache2/sites-available/000-default.conf usando nano o vim usando este comando: –

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

Luego, en el archivo 000-default.conf , agréguelo después de la línea DocumentRoot /var/www/html . Si su directorio html raíz es algo diferente, escriba lo siguiente:

  AllowOverride All  

Después de hacer todo, reinicie apache con el comando sudo service apache2 restart

Lo más probable es que AllowOverride esté configurado en None. en la sección Directorio de apache2.conf ubicado en la carpeta / etc / apache2

Intente configurarlo en AllowOverride All

Solo sigue 3 pasos

  1. Habilita mode_rewrite usando el siguiente comando

    sudo a2enmod reescribir

Se pedirá una contraseña. Ingrese su contraseña

  1. Actualice su archivo 000-default.conf o default.conf ubicado en el directorio / etc / apache2 / sites-available / . no puedes editarlo directamente así que use el siguiente comando para abrir

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

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

conseguirás

DocumentRoot / var / www / html

O

DocumentRoot / var / www

línea. Agregue el siguiente código después de él.

  Options Indexes FollowSymLinks AllowOverride All Require all granted  

Haga que el usuario la ruta de la etiqueta del directorio sea la misma que se muestra en su archivo.

  1. Reinicie su servidor Apache usando el siguiente comando

    sudo service apache2 restart

En mi experiencia, la directiva / var / www / directory previene las directivas de la subcarpeta virtualhost. Por lo tanto, si ha probado todas las sugerencias y aún no funciona y está utilizando hosts virtuales, intente esto;

1 – Asegúrese de tener la directiva AllowOverride All en /etc/apache2/sites-available/example.com.conf

2 – Verifique las directivas de directorio / var / www / en /etc/apache2/apache2.conf (posiblemente en la línea 164), que se ve como;

  Options Indexes FollowSymLinks AllowOverride None Require all granted  

Si hay una directiva AllowOverride None , cámbiela a AllowOverride All o simplemente escape la línea

En WampServer Abra el icono de WampServer Tray —-> Apache —> Apache Modules —> rewrite_module

use RewriteBase / {su carpeta} / en su .htaccess

De forma predeterminada, Apache prohíbe el uso de un archivo .htaccess para aplicar reglas de reescritura, por lo que

Paso 1 – Habilitación de mod_rewrite (si no está habilitado) Primero, necesitamos activar mod_rewrite. Está disponible pero no habilitado con una instalación limpia de Apache 2.

 $ sudo a2enmod rewrite 

Esto activará el módulo o le avisará que el módulo ya está habilitado. Para poner en práctica estos cambios, reinicie Apache.

 $ sudo systemctl restart apache2 

mod_rewrite ahora está completamente habilitado. En el siguiente paso configuraremos un archivo .htaccess que usaremos para definir reglas de reescritura para redirecciones.

Paso 2 – Configuración de .htaccess Abra el archivo de configuración de Apache predeterminado usando nano o su editor de texto favorito.

 $ sudo nano /etc/apache2/sites-available/000-default.conf 

Dentro de ese archivo, encontrará un bloque que comienza en la primera línea. Dentro de ese bloque, agregue el siguiente bloque nuevo para que su archivo de configuración tenga el siguiente aspecto. Asegúrese de que todos los bloques estén apropiadamente sangrados.

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

   Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted  . . .  

Guarde y cierre el archivo. Para poner en práctica estos cambios, reinicie Apache.

 $ sudo systemctl restart apache2 

Hecho. Tu .htacess debería funcionar. Este enlace en realidad puede ayudar a alguien https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04