前提
- 1.vuejs项目使用html5模式;
- 2.vuejs项目独立部署在一个s3桶中;
- 3.vuejs项目独立使用一个AWS Cloudfront的CDN。
解决
只需要在Cloudfront中添加一个函数,大概规则就是如果从请求uri中提取到文件名,则表示需要访问s3,如果没有则重写到/index.html
请求。
具体函数内容如下:
javascript
function handler(event) {
var request = event.request;
if (request.uri.match(/\/[^./]+\.[^./]+$/) === null) {
request.uri = "/index.html";
}
return request;
}
具体怎么样在AWS Cloudfront中设置函数,可以参考AWS CloudFront使用js函数实现重定向。
总结
vuejs的html5模式就是但没有发现文件名就重写到/index.html
请求。注意,这里是重写,重写,重写,不是转发。