Firebase主机出现意外的尾部斜杠行为

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/

我在Firebase主机上看到了意外的行为(至少按照我的说法)。我希望Firebase提供带有尾随斜杠的URL(托管目录中存在的实际文件除外)。为此,我在firebase.json中将
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/