¿Por qué no puedo usar lo siguiente?
RewriteRule ^(.*)$ $1.html [L] Archivo .htaccess :
RewriteRule ^(.*)$ index.php [L] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ $1.html [L]RewriteRule ^(.*)$ index.php [L] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ $1.html [L]
La primera regla reescribe todo en index.php . Las directivas que siguen son efectivamente ignoradas.
Sin embargo, la segunda regla también reescribe todo (mismo patrón ^(.*)$ - conflicto obvio), que no se asigna a un archivo o directorio existente para agregar una extensión .html . Esta segunda regla es más restrictiva.
Parece que lo que quieres hacer es:
.html a las URL que se asignarían a archivos .html .index.php .Supuestos adicionales
.htaccess se encuentra en la raíz del documento..html no contienen puntos en la ruta de la URL. Por lo tanto, los puntos en la ruta de la URL solo indican extensiones de archivo.index.php (como lo estaba haciendo), también reescribirá todos sus recursos estáticos (CSS, JS, imágenes, etc.), así que asumo que desea hacer excepciones para los recursos estáticos y cualquier cosa que de lo contrario, se asignaría a un archivo o directorio.Pruebe lo siguiente en su lugar:
RewriteEngine On # Append the ".html" extension if the target file exists RewriteCond %{DOCUMENT_ROOT}/$1.html -f RewriteRule ^([^.])$ $1.html [L] # Rewrite other requests that don't map to files/directories to index.php RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule !\.(?:css|js|jpg|png|gif)$ index.php [L]