我目前正在尝试创建一个静态网站。使用JavaScript,我向API发出请求,并获取页面的内容。但我的问题是,我不希望链接使用example.com/list这样的查询参数?item=项目id我希望它是example.com/list/item-id.
我的问题的一个很好的例子是如何在静态网站上重新创建快速路由应用程序.get('/list/:item_id'(,其中服务器不会因为页面不存在而抛出404,但它会将exaple.com/list/item1和example.com/list/iitem2路由到同一页面,客户端javascript将在该页面上确定页面是否存在。
这取决于您使用哪个Web服务器来托管静态站点。以下是在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 list
list
(保存时不带.html
扩展名的HTML文件(:
<!doctype html>
<html>
<head>
<script>
alert(location.pathname)
</script>
</head>
<body>
HELLO WORLD
</body>
</html>
我在Apache服务器上测试了这个配置。当我访问https://example.com/list/item-id
时,Apache将/list
的内容作为HTML提供。该HTML中的JavaScript向/list/item-id
发出警报。
您的JavaScript必须从路径名中解析项目id,并用它调用API
还有其他技术可以用于为许多不同的路径提供单个HTML文件。使用由重写规则提供动力的前端控制器是非常常见的。您还可以使用多视图来获得与Apache的内容协商模块相同的结果。
如果你想在Nginx或IIS等其他web服务器上托管静态内容,你需要找到类似的技术。