Firebase 将所有网址重定向到 index.html
Firebase redirect all URLs to index.html
我正在尝试将所有 URL 重定向到我的 SPA 的 index.html
。当 URL 是一个目录深度时,我下面的 firebase.json
有效,例如http://localhost:8000/page1
但没有更深的,例如http://localhost:8000/covid19-dashboard/page1/page1a
无法加载并给出控制台错误 Uncaught SyntaxError: Unexpected token '<'
。我也尝试了以下但使用 "source": "**/**"
并发现了相同的结果。
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"public": "dist",
"target": "project-name",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"storage": {
"rules": "storage.rules"
}
}
这只是一个猜测,但请检查您的 <script>
标记以查看它们是否是相对 URL(例如 <script src="js/main.js">
)。您需要将它们设为绝对(例如 <script src="/js/main.js">
)以便当深层链接的相对路径发生变化时,它们将正确加载。
您看到的错误很可能是脚本加载的 .js
文件不存在的结果,因此加载了您的 index.html
。
我正在尝试将所有 URL 重定向到我的 SPA 的 index.html
。当 URL 是一个目录深度时,我下面的 firebase.json
有效,例如http://localhost:8000/page1
但没有更深的,例如http://localhost:8000/covid19-dashboard/page1/page1a
无法加载并给出控制台错误 Uncaught SyntaxError: Unexpected token '<'
。我也尝试了以下但使用 "source": "**/**"
并发现了相同的结果。
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"public": "dist",
"target": "project-name",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
"storage": {
"rules": "storage.rules"
}
}
这只是一个猜测,但请检查您的 <script>
标记以查看它们是否是相对 URL(例如 <script src="js/main.js">
)。您需要将它们设为绝对(例如 <script src="/js/main.js">
)以便当深层链接的相对路径发生变化时,它们将正确加载。
您看到的错误很可能是脚本加载的 .js
文件不存在的结果,因此加载了您的 index.html
。