在社交媒体分享按钮中使用哈希几乎是不可能的,所以我想摆脱我的 flutter web url 路径中的 #,问题是当我这样做时,我用 onRoute 设置的导航会中断并且找不到网页上,我认为这是一个激增问题,但即使我将其部署在 firebase 上,将其配置为单页应用程序,我也遇到同样的问题。 我真的在这里很挣扎..我没有更多的想法了,你呢?
好吧,我正在回答我自己的问题,以便让未来有同样问题的开发者的旅行更轻松。 Flutter 路径 url 策略似乎在子域下崩溃,使用 Surge、Firebase 托管或 netlify 等网站会使您的导航在使用 pathURlStrategy() 时停止工作。
使用真实域名为我解决问题
URL 中的“#”被替换为“%23”
查看此处以查看更多 URL 编码中的 ASCII 字符
单页应用程序无法在 Firebase 托管或 Netlify 等静态网站托管服务上运行的原因是,当用户尝试访问
\path\in\the\url.html
等 url 时,网站服务器总是尝试使用
https://www.hostname.path/in/the/url
等文件或其他内容进行响应。但是,对于单页 Web 应用程序,无论用户尝试访问哪个 url,服务器都应始终返回
index.html
。这可以通过使用网站根目录中的 _redirect
文件修改网站服务器的重定向规则来实现,如此处所述。
对于 Netlify 部署,只需将
netlify.toml
文件添加到部署目录(Flutter 为 build\web\
),其中包含以下内容:
[[redirects]]
from = "/*"
to = "/index.html"
status = 200