这个答案的灵感来自于在 IIS 文档中设置 HTTP 请求标头和 IIS 服务器变量。他们做了类似的事情,但奇怪的是它避免检测原始 URL 是使用 HTTP 还是 HTTPS 访问的。
首先,您需要对 IIS 服务器具有管理访问权限,以便在 URL 重写模块中设置新的允许服务器变量。这在链接的文章中有所描述,但这里是基本步骤:
- 在 IIS 管理器中,导航到您的网站或应用程序文件夹。
- 打开 URL 重写功能。
- 在“操作”窗格中,单击“查看服务器变量...”,然后单击“添加...”
- 输入服务器变量的名称。
- 如果您想将其作为 HTTP 标头访问,请在其前面加上
HTTP
. 例如,HTTP_X_MY_HEADER
可作为X-MY-HEADER
标题访问。
然后,在您的重写规则中,将服务器变量值设置为{CACHE_URL}
. 您可以通过 UI 或直接在 web.config 中执行此操作,如下所示。
注意:请务必根据需要设置匹配、条件和操作。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="original URL sample" stopProcessing="true">
...
<serverVariables>
<set name="HTTP_X_MY_HEADER" value="{CACHE_URL}" />
</serverVariables>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
生成的标头将明确包含端口号,例如http://foo.example:80/bar
,因此您可能需要根据需要进行处理。