web.config重写规则在Blob存储中的Azure静态网站中不起作用

Car*_*pon 5 asp.net azure azure-storage reactjs

我在Azure Blob存储中托管了一个页面的React应用程序,但正在获取所请求的内容不存在。深入链接到页面时出错:

在此处输入图片说明

我已在存储帐户中启用了静态网站选项

在此处输入图片说明

这些文件都放在$ web容器中:

在此处输入图片说明

这包括以下带有重写规则的web.config,该规则应让index.html处理所有路由:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="React Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

谁能看到我哪里出问题了?

Bur*_*and 8

如果您将404页指向您的,则可以进行深层链接index.html。这不是一个完美的解决方案-具有副作用-但适用于大多数情况。

在此处输入图片说明


Pet*_*Pan 3

Azure 存储 GPv2 中的静态网站与 Azure 应用服务不同。它只托管这些静态网页文件,其中包括 HTML/CSS/JavaScript 文件,其他文件可以在浏览器中处理,如图像robots.txt等。由于没有 IIS,它无法处理服务器端脚本。因此,您的web.config文件对于更改访问路由并属于 IIS 的服务器端脚本来说是没有意义的。

其实你可以在Azure门户中看到这些字样。

配置静态网站托管的 blob 服务使你能够在存储帐户中托管静态内容。网页可能包括静态内容和客户端脚本。Azure 存储不支持服务器端脚本编写。 了解更多

并参考Learn more链接Static website hosting in Azure Storage

与静态网站托管相比,依赖服务器端代码的动态网站最好使用 Azure 应用服务托管。

如果需要 URL 重写功能,我建议您的应用程序使用 Azure 应用服务。