【问题标题】:web.config not working in IIS8.0web.config 在 IIS8.0 中不起作用
【发布时间】:2015-10-19 16:27:43
【问题描述】:

我正在将一个小的 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 根本不起作用。

谁能告诉我我的文件有什么问题?

【问题讨论】:

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


    【解决方案1】:

    正则表达式有一点错误。

    这是我的测试项目目录:

    这是我的测试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>
    

    结果是在访问&lt;web_app_name&gt;.azurewebsites.net时,匹配到第二条规则,重写为&lt;web_app_name&gt;.azurewebsites.net/api.php

    并且在访问&lt;web_app_name&gt;.azurewebsites.net/example时,匹配第一条规则并重写为&lt;web_app_name&gt;.azurewebsites.net/app.php?request=example

    【讨论】:

    • 感谢您的帮助!现在我一直收到 404 错误。你能确认我翻译的 web.config 文件正确吗?
    • 可以直接访问api.php吗?
    • 不,我不能直接访问它。我收到内部服务器错误。详情在这里:postimg.org/image/z9k06z3q7。我的项目结构如下所示:postimg.org/image/rguv4uxr3。好像我没有访问该文件的权限。
    • 我已经尝试将控制台的权限更改为“SR”。
    • 是否有任何其他技术我可以尝试使其可访问?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2013-12-06
    • 2015-01-05
    相关资源
    最近更新 更多