¿Cuál es la mejor opción cuando se intenta que example.com/about muestre example.com/about.html y sin cambiar la URL a /about.html? En este momento estoy intentando usar el siguiente código y simplemente devuelve un error 404.
RewriteRule ^/about$ https://example.com/about.html [R=301,L]
Editar #1 aw3dkActualmente tengo habilitadas las vistas múltiples pero sigo recibiendo el error 404. Aquí está mi configuración actual en VirtualHost
<Directory /var/www/public_html>
Options All +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Respuesta1
En lugar de usar mod_rewrite parareescribir internamentela solicitud, podrías usar MultiViews (mod_negotiation) en su lugar:
Options +MultiViews
mod_rewrite le permite realizar reescrituras de URL más complejas; sin embargo, si todo lo que está haciendo es eliminar la extensión del archivo, entonces MultiViews será suficiente: para eso está diseñado.
Cuando realiza una solicitud /about
(una URL/archivo sin una extensión en un directorio válido), con MultiViews habilitado, mod_negotiation buscará un archivo que coincida con el tipo mime esperado y lo devolverá como una solicitud interna.
ACTUALIZAR:
Options All +MultiViews
Esta no es una sintaxis válida (supongo que debes estar en Apache 2.2, ya que esto produciría un error durante el inicio en Apache 2.4). Como se señala en eldocumentos apache:
Advertencia
MezclarOptions
con a+
o-
con aquellos que no tienen una sintaxis no válida y es probable que produzca resultados inesperados.
Para expresar All
y MultiViews
necesitarías dos directivas:
Options All
Options +MultiViews
All
es el valor predeterminado (en Apache 2.2), por lo que puede que no sea necesario. Sin embargo, sería preferible especificar sólo las opciones que necesita en una sola directiva, por ejemplo:
Options FollowSymLinks Includes MultiViews
Respuesta2
¿Puedes intentarlo así? Creo que funcionará.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^about$ https://example.com/about.html [R=301,L]
También puedes utilizar la redirección:
Redirect 301 /about http://example.com/about.html
Redirect 301 /any_dir/about http://example.com/about.html