Firebase URL 重写函数和目标
Firebase URL rewriting to both functions and destinations
我正在构建一个 React/Redux 应用并尝试重写一个 Firebase 函数,所有其他 URL 重写为 index.html。
现在,当我在 Chrome 浏览器上执行 "empty cache and hard reload" 时,我只能得到一个 URL 来重写函数。
这是我的 firebase.json 文件。
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build",
"rewrites": [
{
"source": "/Photos/**", "function": "getPhoto"
},
{
"source": "**", "destination": "/index.html"
}
]
}
}
例如,当我转到https://nameofmyapp.firebaseapp.com/Photos/2017/October/2/12345时,我被路由到根目录(index.html),而当我期望被定向到getPhoto
函数时。
我唯一能够到达“/Photos/**”重写 URL 的情况是,如果我先在浏览器中输入 https://nameofmyapp.firebaseapp.com/Photos/2017/October/2/12345 URL,然后执行Chrome 中的 "Empty Cache and Hard Reload"。这是唯一一次为我执行该功能。 (不确定这是否与 service-worker 行为有关?) 即便如此,在那个 URL 的正常刷新中,我最终又回到了 index.html .
谁能告诉我我错过了什么?
我刚刚发布了 very similar problem
的答案
您需要更改您的 "single app rewrite" :
{
"hosting": {
"public": "build",
"rewrites": [
{
"source": "/Photos/**", "function": "getPhoto"
},
{
"source": "!/Photos/**", "destination": "/index.html"
}
]
}
}
此规则不是重定向 index.html 上的所有内容(如“**”),而是重定向不在照片文件夹和子文件夹中的所有内容。
我正在构建一个 React/Redux 应用并尝试重写一个 Firebase 函数,所有其他 URL 重写为 index.html。
现在,当我在 Chrome 浏览器上执行 "empty cache and hard reload" 时,我只能得到一个 URL 来重写函数。
这是我的 firebase.json 文件。
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "build",
"rewrites": [
{
"source": "/Photos/**", "function": "getPhoto"
},
{
"source": "**", "destination": "/index.html"
}
]
}
}
例如,当我转到https://nameofmyapp.firebaseapp.com/Photos/2017/October/2/12345时,我被路由到根目录(index.html),而当我期望被定向到getPhoto
函数时。
我唯一能够到达“/Photos/**”重写 URL 的情况是,如果我先在浏览器中输入 https://nameofmyapp.firebaseapp.com/Photos/2017/October/2/12345 URL,然后执行Chrome 中的 "Empty Cache and Hard Reload"。这是唯一一次为我执行该功能。 (不确定这是否与 service-worker 行为有关?) 即便如此,在那个 URL 的正常刷新中,我最终又回到了 index.html .
谁能告诉我我错过了什么?
我刚刚发布了 very similar problem
的答案您需要更改您的 "single app rewrite" :
{
"hosting": {
"public": "build",
"rewrites": [
{
"source": "/Photos/**", "function": "getPhoto"
},
{
"source": "!/Photos/**", "destination": "/index.html"
}
]
}
}
此规则不是重定向 index.html 上的所有内容(如“**”),而是重定向不在照片文件夹和子文件夹中的所有内容。