Actualmente estoy tratando de crear un sitio web que sea estático. Usando JavaScript, hago una solicitud a mi API y obtengo el contenido de la página. Pero mi problema es que no quiero que los enlaces usen parámetros de consulta como example.com/list?item=item-id. Quiero que sea example.com/list/item-id.
Un buen ejemplo de mi pregunta sería cómo recrear la aplicación de enrutamiento rápido. enrutará exaple.com/list/item1 y example.com/list/item2 a la misma página donde el javascript del lado del cliente determinará si la página existe.
Depende del servidor web que esté utilizando para alojar su sitio estático. Esta es una forma de hacerlo con un sitio estático alojado en Apache:
.htaccess : # Allow static files to have extended paths AcceptPathInfo On # Default charset AddDefaultCharset utf-8 # Make sure that an HTML file name "list" # (with no .html extension) gets the right content type AddType text/html listlist (un archivo HTML guardado sin una extensión .html ): <!doctype html> <html> <head> <script> alert(location.pathname) </script> </head> <body> HELLO WORLD </body> </html> Probé esta configuración en mi servidor Apache. Cuando visito https://example.com/list/item-id , Apache sirve el contenido de /list como HTML. El JavaScript en ese HTML alerta /list/item-id .
Su JavaScript tendría que analizar la identificación del elemento del nombre de la ruta y llamar a su API con él.
Hay otras técnicas que podría usar para servir un solo archivo HTML para muchas rutas diferentes. Es muy común utilizar un controlador frontal alimentado por una regla de reescritura . También puede usar vistas múltiples para lograr los mismos resultados con el módulo de negociación de contenido de Apache.
Deberá encontrar técnicas similares si desea alojar el contenido estático en otros servidores web como Nginx o IIS.