IIS服务器上的web.config导致的错误500

时间:2017-05-18 16:48:28

标签: php iis web-config

我遇到了一个web.config文件的问题,我把它放在IIS服务器上的/ admin目录下。请注意,我不熟悉这种文件,我通常在Apashe服务器上使用.htaccess。

上传时,文件标记为 500 - 内部服务器错误。当我从目录/ admin中取出web.config文件时,它们可以正常使用未重写的URL。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="rule 1H" stopProcessing="true">
                    <match url="^modifier-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=modif-ville&id=$1"  />
                </rule>
                <rule name="rule 2H" stopProcessing="true">
                    <match url="^modif-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=modif-ville&id=$1&action=modif"  />
                </rule>
                <rule name="rule 3H" stopProcessing="true">
                    <match url="^inscriptions$"  />
                    <action type="Rewrite" url="//index.php?page=liste-inscrits"  />
                </rule>
                <rule name="rule 4H" stopProcessing="true">
                    <match url="^inscriptions-del-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=liste-inscrits&del=$1"  />
                </rule>
                <rule name="rule 5H" stopProcessing="true">
                    <match url="^inscriptions-modif-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=liste-inscrits&modif=$1"  />
                </rule>
                <rule name="rule 6H" stopProcessing="true">
                    <match url="^inscriptions-valid-(.*)-set-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=liste-inscrits&valid=$1&set=$2"  />
                </rule>
                <rule name="rule 7H" stopProcessing="true">
                    <match url="^inscriptions-tri-(.*)$"  />
                    <action type="Rewrite" url="//index.php?page=liste-inscrits&tri=$1"  />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

你能在那个文件中看到错误吗?

编辑: 经过几次测试后,问题似乎出现了这种带有未知变量的规则:(。*)

当我只保留此规则时,没有问题:

<rule name="rule 3H" stopProcessing="true">
    <match url="^inscriptions$"  />
     <action type="Rewrite" url="//admin/index.php?page=liste-inscrits"  />
</rule>

未知变量是否有特殊格式?

3 个答案:

答案 0 :(得分:0)

我发现您应该使用$1$2等来代替{R:1}{R:2}

https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

<rule name="rule 1H" stopProcessing="true">
    <match url="^modifier-(.*)$"  />
    <action type="Rewrite" url="//index.php?page=modif-ville&id={R:1}"  />
</rule>

答案 1 :(得分:0)

我明白了!您必须使用&amp;代替& 这么简单的事情浪费了这么多时间......

答案 2 :(得分:0)

我遇到了同样的麻烦,可以通过重命名不带空格的规则来无休止地解决问题。

我有<rule name="SPA Routes"...>抛出了500,在我将规则重命名为<rule name="SPA"...>

之后,问题得到了解决。