我部署了一个Firebase应用程序,该应用程序包含一个功能和公共目录中的一系列静态文件,这些文件构成了网站本身。
firebase.json
包含一个重定向规则和一个重写规则。
奇怪的是,在本地测试该功能时,我根本看不到任何问题,静态index.html
文件加载了相应的css和js文件,它们存储在文件夹/assets
下。
但是,当我在Firebase托管中部署应用程序时,该特定目录(/ assets)下的所有文件都返回一个HTTP/2 500
,并带有指向它们自己的一些额外标头,例如location
。
除了功能(甚至没有被调用)之外,我看不到其他任何东西的日志,所以我无法解决此问题。
有什么主意吗?
当curl
使用其中一个CSS文件时,完整的HTTP响应如下:
< HTTP/2 500
< server: nginx
< content-type: text/html; charset=utf-8
< location: /assets/css/bootstrap.min.css
< etag: W/"2c-Fy5LxM6AQUiWl2dvoMk+v0DAv6s"
< fastly-restarts: 1
< accept-ranges: bytes
< date: Mon, 08 Apr 2019 10:31:34 GMT
< via: 1.1 varnish
< x-served-by: cache-lcy19235-LCY
< x-cache: MISS
< x-cache-hits: 0
< x-timer: S1554719494.752454,VS0,VE252
< vary: x-fh-requested-host
< content-length: 44
<
<!doctype html>
<html>
<head>
* Connection #0 to host [REDACTED] left intact
<title>U
这是在U
之后被截断的完整响应。
答案 0 :(得分:0)
当我找到问题所在时,让我回答自己,但我发现互联网上没有关于该特定问题的任何信息。
由于缺乏对Firebase的专业知识,我意识到我的重定向规则正在破坏应用程序,因为它正在将/assets
下的所有文件重定向到自己,但是我没有得到重定向循环,而是这种奇怪的行为。
同样,本地操作没有问题,但是在部署时出现了HTTP/2 500
错误。
这是规则,以防万一这有助于将来某人解决此特定问题:
"redirects":[
{
"source": "/assets/:path*",
"destination": "/assets/:path",
}
]