【问题标题】:Error 500 caused by web.config on IIS ServerIIS 服务器上的 web.config 导致的错误 500
【发布时间】:2017-05-18 16:48:28
【问题描述】:

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

上传后,文件被标记为500 - 内部服务器错误。当我将 web.config 文件从目录 /admin 中取出时,它们可以很好地处理未重写的 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>

未知变量有特殊格式吗?

【问题讨论】:

  • 日志是怎么说的?
  • 日志中没有任何内容。我只是在页面上收到此错误:500 - 内部服务器错误。您要查找的资源有问题,无法显示。它在 web.xml 时不显示。 config 不在文件夹中。
  • 我发现了一些有趣的东西(见编辑后的帖子)

标签: php iis web-config


【解决方案1】:

我发现你应该使用{R:1}{R:2}等,而不是$1$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>

【讨论】:

    【解决方案2】:

    我明白了!您必须使用 &amp;amp; 而不是 &amp; 这么简单的事情浪费了这么多时间……

    【讨论】:

      【解决方案3】:

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

      我有 &lt;rule name="SPA Routes"...&gt;,它会抛出 500,在我将规则重命名为 &lt;rule name="SPA"...&gt; 后它已修复

      【讨论】:

        猜你喜欢
        • 2012-03-29
        • 2015-11-25
        • 2018-06-06
        • 2016-08-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多