当我刷新我的网站时,我得到一个404。这是使用Angular2,typescript和firebase。
我已经用我的Angular2应用程序部署到FirebaseApp。
路由似乎改变罚款,但当我刷新浏览器它重定向到404页。
当我在本地刷新时,这不会发生。
我是否缺少任何路由设置或Firebase设置?
我的firebase.json文件:
{
"firebase": "test",
"public": "src",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
字符串
4条答案
按热度按时间ruoxqz4g1#
对于Firebase Hosting,有关重定向和重写的文档在这里:https://www.firebase.com/docs/hosting/guide/url-redirects-rewrites.html
从那里:
当你想为多个URL显示相同的内容时,使用重写。重写在模式匹配中特别有用,因为你可以接受任何匹配模式的URL,让客户端代码决定显示什么。
您可能正在寻找该页面上的第一个重写示例:
字符串
这是一个指令,让Web服务器为任何传入的请求提供
/index.html
服务,无论路径是什么。6pp0gazn2#
在已接受的答案的基础上,我想说明重写规则在托管规则的 * 内部 *。
字符串
Firebase也有一个更新的文档页面,上面的例子就是从那里来的。
另外,我被hash(#)问题弄糊涂了。我发现这并不适用于新的Angular。在firebase.json中做这些小的更改,重建,发布到firebase,然后用clear-cache刷新页面,立即解决了我的404问题,不需要解决URL中的hash问题。
kadbb4593#
我认为你使用了Angular2路由的默认模式(即
HTML5LocationStrategy
)。在这种情况下,你需要在你的web服务器上进行一些配置,以便为每个路由对应的每个URL加载index.html
(你的入口点文件)。如果你想切换到HashBang方法,你需要使用这个配置:
字符串
在这种情况下,当您刷新页面时,它将再次显示。
希望对你有帮助,蒂埃里
ecfsfe2w4#
我在生产中遇到了同样的问题。以下步骤帮助我解决了这个问题。接下来你必须添加你的根模块:
字符串
然后它将切换到HashLocationStrategy。Angular文档
希望能对大家有所帮助!