Lea esto y bababa, pero lamentablemente ninguno de ellos puede indicarme cómo depurar.
Estoy tratando de redirigir debajo de la URL https://example.com/hello a https://example.com/hello.html
Así es como lo hice
Primero
vim /etc/apache2/apache2.conf , establezca AllowOverride All en <Directory /var/www/>
Ahora es
<Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>Segundo
sudo service apache2 restart
Tercero
Cree .htaccess en public_html y debajo del código
<IfModule mod_rewrite.c> Options FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} !^.*\.html$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ %{REQUEST_FILENAME}.html </IfModule>Pero aún devuelve 404 no encontrado como a continuación.
¿Alguna sugerencia o alguna pieza que me falte para configurar apache? Gracias
Se perdió la configuración de mod_rewrite . puede checar esta publicacion
Está agregando .html al final de %{REQUEST_FILENAME} , lo que siempre generará un 404, ya que %{REQUEST_FILENAME} representa la ruta completa del sistema de archivos, no la ruta URI.
Deberías usar esta regla:
RewriteEngine On RewriteCond %{REQUEST_URI} !\.html$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . %{REQUEST_URI}.html [L]o mejor:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.+?)/?$ $1.html [L]