Firebase主机出现意外的尾部斜杠行为
我在Firebase主机上看到了意外的行为(至少按照我的说法)。我希望Firebase提供带有尾随斜杠的URL(托管目录中存在的实际文件除外)。为此,我在firebase.json中将Firebase主机出现意外的尾部斜杠行为,firebase,firebase-hosting,Firebase,Firebase Hosting,我在Firebase主机上看到了意外的行为(至少按照我的说法)。我希望Firebase提供带有尾随斜杠的URL(托管目录中存在的实际文件除外)。为此,我在firebase.json中将trailingSlash设置为true 这导致: example.com redirect to example.com/index.html/ example.com/js/script.js redirect to example.com/
trailingSlash
设置为true
这导致:
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在实际js或图像资产的根和尾部斜杠处添加“index.html”
编辑:
根据Frank的要求,以下是我使用的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"
}]
}]
}
注:我已经尝试将
trailingSlash
和cleanUrls
设置为true
,并且还尝试分别设置这些true/false
。至于你的问题,如果你想调用“重写”命令,服务器可以执行“重写”在根目录中找不到任何index.html时使用
解决方案一:
您只需将index.html放在“public”文件夹下的根目录中。我切换到您的公用文件夹并部署您的服务器
解决方案二:
您可以将index.html放在某个文件夹下,该文件夹可以命名为任何名称。然后使用JSON格式:“rewrites”:[{“source”:“**”,“destination”:“/folderName/index.html”}],
,但不能将任何index.html放在根文件夹下
解决方案三:
创建根文件夹,将JS/CSS/IMG/folders和index.html放在根文件夹下。然后像这样部署服务器JSON文件
{
"firebase": "you app name",
"public": ".",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
如果为true,它将重定向URL以添加尾随斜杠。当错误
它将重定向URL以删除尾部斜杠。未指明时,
尾部斜杠仅用于目录索引文件(例如。
关于/index.html)
不要添加这个选项,它只会影响URL。我确信这对Vinny来说已经太晚了,但我遇到了同样的问题。将
添加到我的html文件中,可防止我出现意外的尾部斜杠行为。“托管”:{
“公众”:“…”,
“忽略”:[…],
“trailingSlash”:错误
}
只需添加trailingSlash属性并将其设置为false即可在firebase重定向时删除尾部斜杠。查看他们的详细信息@FrankvanPuffelen请查看更新的问题。@FrankvanPuffelen我希望您有机会按照您的要求查看编辑?我按照您概述的解决方案进行了操作,但运气不佳。我可能不清楚我对这个问题的描述。问题在于
trailingSlash
设置为true
时会导致example.com
重定向到example.com/index.html/
,example.com/js/script.js
重定向到example.com/js/script.js/
和example.com/css/style.css
重定向到example.com/css//code>。请注意文件(script.js和style.css)URL末尾的尾随斜杠。尾随斜杠“不应”添加到文件URL。将尾部斜杠添加到文件URL会导致这些URL。。。(见下一条评论)(续)。。。重写为index.html
。然后我们有另一个问题是example.com
重定向到example.com/index.html/
,这并不优雅。第二个问题是由于将trailingSlash
设置为true
而引起的,与重新布线规则无关。我已经设置了一个演示Firebase来重新创建该问题。请点击以下链接https://scorching-torch-3741.firebaseapp.com/css/style.css
,https://scorching-torch-3741.firebaseapp.com/js/script.js
和https://scorching-torch-3741.firebaseapp.com/
。