我正在尝试将子域中的每个url通过firebase函数进行路由。这是我的配置:
功能文件:
const functions = require('firebase-functions');
exports.handleWebRequest = functions
.region('europe-west1')
.https
.onRequest((req, res) => {
res.send('Currently down.');
});
我的firebase.json
:
{
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "handleWebRequest"
}
]
},
"functions": {
"source": "firebase-functions",
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
当我部署主机和功能并转到浏览器中的URL时,我希望我打开的每条路线都显示“当前关闭”。但是,每条路由除外,根路由都会显示“当前关闭”消息,而根路由则显示我部署的index.html
。
因此,简而言之:
/
显示了我的index.html
(我不想要)
/whatever
显示“当前关闭”。 (就是我想要的)
我之所以尝试通过该功能路由所有内容,是因为我想使用HTTP Basic Auth屏蔽网站,而Firebase不支持HTTP Basic Auth。
答案 0 :(得分:3)
这很可能是因为您在index.html
文件夹下仍然有public
文件。
如doc中所述:
注意:公共目录中的静态文件优先于 重写,因此所有静态文件都将与云一起提供 功能端点。
如果您删除index.html
文件,它应该会按您期望的方式工作。
答案 1 :(得分:3)
您的功能已部署到“ europe-west1”区域,但是Firebase Hosting当前仅支持默认的“ us-central1”。 documentation中对此进行了说明:
重要提示:Firebase托管仅在us-central1中支持云功能。