在 Azure 应用服务中添加重写规则的正确方法是什么

What is the proper way to add rewrite rules in an Azure App Service

我想向我的 Azure 应用程序服务添加重写规则,但如果我什至尝试创建一个 web.config 通过如下所示的简单重写,站点 returns 一个 HTTP 500。

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Test" stopProcessing="true">
                    <match url="test" />
                    <action type="Rewrite" url="/index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

我所做的是从头开始创建 web.config 并将其 FTP 放入应用程序服务的 wwwroot 文件夹中,这是我 Ftp 我网站其余部分的位置文件。

我在 Azure 中看到了关于 web.config 文件的 old conversation,但我什至不确定这是否与 Azure 应用程序服务有关 - Azure 中的情况变化如此之快,以至于我反正我应该分开问。

我还看到 this link 关于使用 web.config 转换。也许这是必需的?

This other link 似乎表明更新 web.config 是可能的,但他们的示例也对我产生了 HTTP 500。

我在 Azure 门户中查看了我的应用程序服务的配置选项,似乎没有什么让我眼前一亮的。

>>”这个其他link似乎表明更新web.config是可能的”

是的,我们可以通过直接更新 Web.config 文件来更新 Web App 的配置。您可以通过 FTP/WebDeply 或 Kudu 提供的任何其他方式将新版本的配置文件上传到 wwwroot 文件夹。另一种编辑 wwwroot 文件夹中文件的简单方法是使用 App Service Editor,您可以使用它来编辑配置文件。

我无法在我这边重现你的问题。以下是我所做的。

  1. 使用具有“共享”SKU 的 Web 应用程序计划创建 Web 应用程序。
  2. 创建 2 个文件,一个 index.html 文件和一个 Web.config 文件。 Web.config里面的内容和你的一样
  3. 使用 FTP.
  4. 将这些文件上传到我的网络应用程序的 wwwroot 文件夹
  5. 打开网络浏览器并输入 URL,例如“http://xxx.azurewebsites.net/test”。 Web 服务器将return index.html 的内容。证明rewrite没问题

>>“但他们的示例对我来说也是 HTTP 500。”

首先,请确认重写是否正常。建议直接查看index.html页面,查看错误码(500)是否来自index.html页面

有时我们为重写规则提供了错误的语法,它将return 500(URL重写模块错误)。您是否为 Web 应用程序启用了详细的错误日志记录和 Web 服务器日志记录。如果是,您可以查看详细错误消息以获得更多有用信息。关于如何启用和查看诊断日志记录,link 供您参考。

Enable diagnostics logging for web apps in Azure App Service