web.config无法在IIS8.0中运行

时间:2015-10-08 09:04:15

标签: php .htaccess azure web-config iis-8

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

我知道stackoverflow上有很多类似的问题,但我无法自行解决。

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

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?rquest=$1 [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根本不起作用。

可以请别人告诉我我的档案有什么问题吗?

1 个答案:

答案 0 :(得分:1)

正则表达式有一点错误。

这是我的测试项目目录:

enter image description here

这是我的测试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时,它与第二条规则匹配并重写为<web_app_name>.azurewebsites.net/api.php

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