我遇到了一个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>
未知变量是否有特殊格式?
答案 0 :(得分:0)
我发现您应该使用$1
和$2
等来代替{R:1}
和{R:2}
。
<rule name="rule 1H" stopProcessing="true">
<match url="^modifier-(.*)$" />
<action type="Rewrite" url="//index.php?page=modif-ville&id={R:1}" />
</rule>
答案 1 :(得分:0)
我明白了!您必须使用&
代替&
这么简单的事情浪费了这么多时间......
答案 2 :(得分:0)
我遇到了同样的麻烦,可以通过重命名不带空格的规则来无休止地解决问题。
我有<rule name="SPA Routes"...>
抛出了500,在我将规则重命名为<rule name="SPA"...>