web.config 在 IIS8.0 中不工作

web.config not working in IIS8.0

我正在将一些 PHP 应用程序迁移到 Microsoft Azure WebApp。

我知道在 Whosebug 上有很多类似的问题,但我自己想不出来。

之前我在一个子目录中有这个 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?rquest= [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ api.php [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ api.php [QSA,NC,L]
</IfModule>

我现在有这个 web.config 文件,我用在线工具生成它并稍微修改了它。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="rule 1J" stopProcessing="true">
                <match url="(.*)"  ignoreCase="true" />
                <action type="Rewrite" url="/api.php?rquest={R:1}"  appendQueryString="true" />
            </rule>
            <rule name="rule 2J" stopProcessing="true">
                <match url="(.*)"  ignoreCase="true" />
                <action type="Rewrite" url="/api.php"  appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

现在我在尝试访问该页面时没有收到 404 错误。似乎 web.config 根本不起作用。

有人可以告诉我我的文件有什么问题吗?

正则表达式有点错误。

这是我的测试项目目录:

这是我的测试 web.config

<?xml version="1.0"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="rule 1J" stopProcessing="true">
                <match url="^(.*)$"  ignoreCase="true" />
                <action type="Rewrite" url="/api.php?request={R:1}"  appendQueryString="true" />
            </rule>
            <rule name="rule 2J" stopProcessing="true">
                <match url="^(.*)$"  ignoreCase="true" />
                <action type="Rewrite" url="/api.php"  appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>
</configuration>

结果是访问<web_app_name>.azurewebsites.net时,匹配第2条规则,改写为<web_app_name>.azurewebsites.net/api.php

并且在访问 <web_app_name>.azurewebsites.net/example 时,它匹配第一个规则并重写为 <web_app_name>.azurewebsites.net/app.php?request=example