.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