为什么在设置服务器变量时 IIS 重写规则 returns 错误?
Why IIS rewrite rule returns error when set server variable?
我在IIS中添加了一个新的应用程序,并添加了一个web.config文件来重写:
https://mylocaldomain.com/ogc?a=2&b=3&c=3...
到
https://myactualdomain.com/ogc?a=2&b=3&c=3...
但是http://myactualdomain.com需要基本身份验证请求。
所以我的 Web.config 如下所示:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wms" stopProcessing="true">
<match url="^ogc?(.*)" />
<action type="Rewrite" url="http://myactualdomain.com/ogc?(.*)" />
<serverVariables>
<set name="HTTP_Authorization" value="Basic abcdefgasdas" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<clear />
<rule name="wms">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_ORIGIN}" pattern="(.*)" />
</conditions>
<action type="Rewrite" value="{C:0}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
这解决了 returns 错误:
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
如果我删除以下行,不会出现错误,但会弹出用户名和密码。
<serverVariables>
<set name="HTTP_Authorization" value="Basic abcdefgasdas" />
</serverVariables>
如果我设置任何类型的 serverVariables,就会发生 500 错误。我该如何解决这个问题?
默认情况下,分布式重写规则(即为特定站点或 Web 应用程序定义的规则)不能设置或更改任何 IIS 服务器变量,除非服务器变量被添加到“允许”列表。
Select“操作”窗格中的“查看服务器变量...”操作:
使用“添加...”操作将服务器变量 HTTP_COOKIE 和 ORIGINAL_URI 添加到“允许的服务器变量”列表中:
如果问题仍然存在,请使用FRT查看此500错误的原因。
我在IIS中添加了一个新的应用程序,并添加了一个web.config文件来重写:
https://mylocaldomain.com/ogc?a=2&b=3&c=3...
到
https://myactualdomain.com/ogc?a=2&b=3&c=3...
但是http://myactualdomain.com需要基本身份验证请求。
所以我的 Web.config 如下所示:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wms" stopProcessing="true">
<match url="^ogc?(.*)" />
<action type="Rewrite" url="http://myactualdomain.com/ogc?(.*)" />
<serverVariables>
<set name="HTTP_Authorization" value="Basic abcdefgasdas" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<clear />
<rule name="wms">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_ORIGIN}" pattern="(.*)" />
</conditions>
<action type="Rewrite" value="{C:0}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
这解决了 returns 错误:
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
如果我删除以下行,不会出现错误,但会弹出用户名和密码。
<serverVariables>
<set name="HTTP_Authorization" value="Basic abcdefgasdas" />
</serverVariables>
如果我设置任何类型的 serverVariables,就会发生 500 错误。我该如何解决这个问题?
默认情况下,分布式重写规则(即为特定站点或 Web 应用程序定义的规则)不能设置或更改任何 IIS 服务器变量,除非服务器变量被添加到“允许”列表。
Select“操作”窗格中的“查看服务器变量...”操作:
使用“添加...”操作将服务器变量 HTTP_COOKIE 和 ORIGINAL_URI 添加到“允许的服务器变量”列表中:
如果问题仍然存在,请使用FRT查看此500错误的原因。