我的URL重写规则仅适用于IIS中的端口80。
重写适用于:http://localhost:80-> http://localhost:8100
重写适用于:http://localhost:80/redirect-> http://localhost:8100
重写不适用于:http://localhost:8080-> http://localhost:8100
重写不适用于:http://localhost:8080/redirect-> http://localhost:8100
我的web.config如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate" />
<rewrite>
<rules>
<rule name="Redirect to port 8100" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT}" pattern="^8100$" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}:8100/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
web.config仅在默认的http端口80/443上工作,而在特定端口上不工作。
要使用所有端口,必须在web.config中进行哪些更改?
答案 0 :(得分:0)
主要问题是变量{HTTP_HOST}
已包含PORT
信息。
要解决此问题,您需要调整两件事:
我对您的web.config
进行了调整,以查看它如何与您的示例配合使用:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate" />
<rewrite>
<rules>
<rule name="Redirect to port 8100" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true" >
<add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" />
</conditions>
<action type="Redirect" url="http://{C:1}:8100/{R:0}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>