我在 Firebase Hosting 上看到带有斜杠的意外行为(至少在我看来)。我希望 Firebase 提供带有斜杠的 URL(托管目录中存在的实际文件除外)。为此,我trailingSlash
在true
firebase.json 中设置。
这导致:
example.com redirect to example.com/index.html/
example.com/js/script.js redirect to example.com/js/script.js/
example.com/images/image.png redirect to example.com/images/image.png/
预期的行为将是:
example.com redirect to example.com/
example.com/js/script.js served as it is without any redirect
example.com/images/image.png served as it is without any redirect
在实际文件 URL 中添加尾部斜杠会使浏览器/服务器认为script.js
是目录而不是文件,并导致 404。将 index.html 添加到根目录并不优雅。
期望cleanUrls
执行我设置的技巧cleanUrls
,true
并且trailingSlash
该站点立即进入无休止的重定向循环并且无法加载。如何阻止 Firebase 在根目录中添加“index.html”并为实际的 js 或图像资产添加斜杠?
编辑:
按照弗兰克的要求,这是我正在使用的 firebase.json:
{
"firebase" : "example",
"public" : "public",
"cleanUrls" : false,
"trailingSlash" : true,
"ignore" : [ "firebase.json", "**/.*", "**/node_modules/**" ],
"rewrites": [{
"source" : "**",
"destination" : "/index.html"
}],
"headers": [{
"source" : "**/*.@(eot|otf|ttf|ttc|woff|font.css)",
"headers" : [{
"key" : "Access-Control-Allow-Origin",
"value" : "*"
}]
}, {
"source" : "**/*.@(jpg|jpeg|gif|png)",
"headers" : [{
"key" : "Cache-Control",
"value" : "max-age=600"
}]
}, {
"source" : "**/*.@(html|js)",
"headers" : [{
"key" : "Cache-Control",
"value" : "max-age=300"
}]
}]
}
PS:我已经尝试设置trailingSlash
和cleanUrls
设置true
,也尝试true/false
单独设置这些。