按照Microsoft文档中的建议,我已经成功使用$web
容器在Azure Blob存储上建立了静态网站。另外,我为两者定义了index.html
,分别是“索引文档名称”和“错误文档名称”。 这是因为我希望我的JavaScript应用程序处理404
响应。
但是,当在Chrome中查看“网络”标签时,尽管页面实际上在工作,但我看到正在向我请求的URL抛出404
。
我的理论如下:
404
并将URL重写为“错误文档名称”,即我的情况是index.html
(因此我的页面仍然可以使用)我的问题是我的URL是干净的URL,例如:
/activities/some-slug
永远不会以文件形式存在,这只是告诉我的JavaScript应用程序将请求路由到哪里,即要加载的视图。
请注意,页面之所以能工作,是因为该页面仍将404
错误路由到index.html
。
如何告诉Azure blob将所有内容绝对路由到index.html
,并在必要时让我的应用抛出404
?
我们确实已经设置了Premium Verizon CDN,因为我最初不知道Azure Blob上的静态网站选项。如果CDN是最好的路线,请您能提供有关如何配置CDN以提供我想要的内容的说明吗?
我已经阅读了许多文章(特别是this one中的评论),并且我相信可能会有各种解决方案,例如Azure Functions,Proxy,CDN等。也就是说,没有一个提供关于如何实际使用的明确说明。这些特定的服务。
我通常在AWS上工作,因此并不熟悉所有Azure服务和可用配置。
答案 0 :(得分:17)
我想我找到了解决方法
条件:URL文件扩展名
a。运算符:小于
b。扩展名:1
c。大小写转换:无转换
[这基本上意味着所请求的URL没有文件(扩展名),而是应用程序的路由,将由应用程序路由处理]
操作:URL重写
a。源模式:/
b。目的地:/index.html
c。保留不匹配的路径:否
。
答案 1 :(得分:1)
在https://github.com/MicrosoftDocs/azure-docs/issues/43257#issuecomment-580668444向Andreas Wendl致敬
这是一个更简单/可能更正确的解决方案:
/static/*
是/index.html
因此,index.html是为响应/users/
之类的深层链接而提供的,假设/users/alexa.siri
。