将 Azure 静态网站配置为不需要尾部斜杠

Posted

技术标签:

【中文标题】将 Azure 静态网站配置为不需要尾部斜杠【英文标题】:Configure Azure static website to not require a trailing slash 【发布时间】:2020-03-29 13:00:50 【问题描述】:

我有一个配置为静态网站的 Azure 存储帐户。静态网站包含一个名为“versions”的子目录,其中包含该网站的几个其他版本。我可以显示这些版本,但它需要一个尾部斜杠,这显然不理想,因为大多数人不使用它们。

例如,假设我的静态网站的 URL 是 https://mystorageaccount.z8.web.core.windows.net...

没有尾部斜杠 - 显示一个空白页 (https://mystorageaccount.z8.web.core.windows.net/versions/1.2.3) 带有斜杠 - 网站按预期显示 (https://mystorageaccount.z8.web.core.windows.net/versions/1.2.3/)

我假设这是因为静态网站正在尝试提供 https://mystorageaccount.blob.core.windows.net/%24web/versions/1.2.3index.html,但有没有办法可以将静态网站配置为不需要尾部斜杠?

我确实尝试将 /index.html 指定为索引文档,但静态网站配置不允许这样做。

如果指定,索引文档名称的长度必须介于 3 到 255 个字符之间,并且不得包含任何“/”字符。

【问题讨论】:

这是一个单页应用(使用 react 或类似的东西构建)? @ThiagoCustodio 是的。 你见过这个吗? link 如果您希望 yourblog.azureedge.net/myawesomepost(没有尾部斜杠)解析为 yourblog.azureedge.net/myawesomepost.html,您可以将第二个目标模式设置为 $1.html$2。步骤 8 中的目标模式将资产​​解析为 yourblog.azureedge.net/myawesomepost/index.html。当然,这意味着任何没有扩展名的资源都将解析为 .html。 @Ron 谢谢,但我认为这有点过时了。看起来它是在添加静态网站作为功能之前编写的。此外,我们没有使用 Azure CDN 来放置静态网站,而是使用 Azure Front Door(在重写 URL 时似乎没有提供附加斜杠的方式)。 对我来说,这似乎是您的 SPA 的问题,而不是 azure 存储 blob 的问题。看看有没有办法将 pushState 设置为 true 【参考方案1】:

几天前我遇到了这个问题,发现这个非常古老的帖子没有得到回复,所以这是我的 5 美分。

这是由于 Azure 静态 Web 应用程序中的错误,无论它们是在 Blob 存储中还是在不太闪亮的新静态 Web 应用程序服务中。这就是为什么它与使用或不使用 CDN 服务无关的原因。

简而言之,问题是 Azure 静态 Web 应用程序不会在 url 的末尾添加斜杠,这使得无法正确链接页面的资源(脚本、图像、字体、样式等) ),因为它最终会在父文件夹中查找文件夹。

这里解释了这个问题https://github.com/Azure/static-web-apps/issues/42

解决方法

确保在任何链接上添加斜杠或

使用绝对网址而不是相对网址。

【讨论】:

以上是关于将 Azure 静态网站配置为不需要尾部斜杠的主要内容,如果未能解决你的问题,请参考以下文章

Azure APIM 网关正在修剪 api url 中的尾部斜杠

Apache伪静态在网站目录没有反斜杠后自动添加反斜杠

tld 中断来自外部链接的 ssl 重定向后缺少尾部斜杠

托管在通过 Azure Front Door 访问的存储帐户上的静态网站未正确加载

用phpcms如何将静态页面制作成企业网站,头部加尾部

如何将 Azure 授权社交提供程序与静态 html 角度网站一起使用?