Haz todo lo posible por entender el código correctamente antes de adaptarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en la sección de comentarios.
Solución:
Creo que alguna explicación de la respuesta de Jon sería constructiva. La siguiente:
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
comprueba que si el archivo o directorio especificado respectivamente no existe, la regla de reescritura continúa:
RewriteRule ^(.*).html$ /$1 [L,R=301]
Pero ¿qué significa eso? Utiliza regex (expresiones regulares). Aquí hay algo que hice antes…
I pensar eso es correcto.
NOTA: Al probar su .htaccess
no usar redireccionamientos 301. Use 302 hasta que termine la prueba, ya que el navegador almacenará en caché los 301. Consulte https://stackoverflow.com/a/9204355/3217306
Actualizar: me equivoque un poco, .
coincide con todos los caracteres excepto las líneas nuevas, por lo que incluye espacios en blanco. Además, aquí hay una útil hoja de trucos de expresiones regulares
Fuentes:
http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-fd/2034/2
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
Para eliminar la extensión .html de sus URL, puede usar el siguiente código en root/htaccess:
RewriteEngine on
RewriteCond %THE_REQUEST /([^.]+).html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %REQUEST_FILENAME.html -f
RewriteRule ^ %REQUEST_URI.html [NC,L]
NOTA: Si desea eliminar cualquier otra extensión, por ejemplo, para eliminar la extensión .php, simplemente reemplace la html en todas partes con php en el código de arriba.
Con .htaccess bajo apache puedes hacer la redirección así:
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*).html$ /$1 [L,R=301]
En cuanto a la eliminación de .html de la URL, simplemente enlace a la página sin .html
page
Te mostramos reseñas y valoraciones
Si piensas que ha sido útil nuestro artículo, sería de mucha ayuda si lo compartes con otros seniors y nos ayudes a dar difusión a este contenido.