Azure Web 应用程序上的 Wordpress 站点重定向到 404 错误页面

Wordpress site on azure web app redirect to 404 error page

我在 Azure 网络应用程序中托管了一个基于 wordpress 的互联网站点。

如果我在 URL 的“/”后面输入各种字符串(例如:"www.blabla.net/asdfasdf"),我将被重定向到我配置的 404 错误页面。 BUT: 如果 URL 字符串包含一个或多个“+”字符(例如:"www.blabla.net/as+asdf" 或只是 "www.blabla.net/+"),则重定向到配置的 404 错误页面不起作用,我被重定向到包含以下文本的页面:

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

我在 IIS 8 上的 "web.config" 文件如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
                <rule name="WordPress: http://blabla.net" patternSyntax="Wildcard">
                <match url="*"/>
                   <conditions>
                     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                   </conditions>
                <action type="Redirect" url="index.php"/>
         </rule></rules>
        </rewrite>
     </system.webServer>
    </configuration>

如果您能给我任何提示如何配置 web.config 文件,使“+”字符被视为其他各种字符并执行重定向到配置 404 错误页面?

提前致谢!

出于安全原因,自 IIS 7 起,包含双重转义序列的 URL 请求将被过滤模块拒绝。这就是为什么当您输入“+”时会得到 404.11 响应代码的原因字符变成了URL。详情可参考this post

如果您坚持要使带有“+”字符的 URL 起作用,您可以使用下面列出的 web.config 文件。然后 www.blabla.net/as+asdfwww.blabla.net/+ 将被重定向到配置的 404 错误页面,但请记住,这可能会以某种方式降低您网站的安全级别。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.webServer>

        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>

        <rewrite>
            <rules>
                <rule name="WordPress: http://blabla.net" patternSyntax="Wildcard">
                    <match url="*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Redirect" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>