使用IIS URL更改主机头

我有来自以下位置的请求发送到我的网络服务器

http:// www .example.com / blog

我想将其重写为另一个正在监听的服务器

http:// 博客 .example.com

这是我的重写规则:

<rule name="blogredirect1" stopProcessing="true">
          <match url="^blog(.*)" />
          <action type="Rewrite" url="http://blog.example.com{R:1}"  />
</rule>

最终发生的事情是重写将请求发送到位于 blog .mysite.com的第二个服务器IP,但请求标头的主机仍然是 www .mysite.com 。

如何确保将重定向的请求主机设置为blog.mysite.com(在重定向规则中设置)

sunxiangmin 回答:使用IIS URL更改主机头

我可以知道如何检查HOST标头吗?

建议检查{HTTP_HOST}变量,而不是直接查看HTTP标头。因为如果您查看请求标头,您将始终看到www.mysite.com。

您可以从后端服务器blog.mysite.com获取{HTTP_HOST}请求变量。

但是,如果您的意思是Blog.mysite.com中的页面也显示{HTTP_HOST}为www.mysite.com。那么请检查是否已将 system.webServer / proxy / preserveHostHeader 设置为 true ?

顺便说一下,IIS支持手动重写HTTP_HOST,您可以这样修改规则:

               <rule name="blogredirect1" stopProcessing="true">
          <match url="^blog(.*)" />
          <action type="Rewrite" url="http://blog.example.com{R:1}" />
                    <serverVariables>
                        <set name="HTTP_HOST" value="blog.example.com" />
                    </serverVariables>
</rule>

请记住要在URL重写中允许服务器变量{HTTP_HOST}。

https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/setting-http-request-headers-and-iis-server-variables

您也可以在applicationhost.config <location path="sitename">部分中进行设置。

 <location path="Default Web Site">
        <system.webServer>
            <rewrite>
                <allowedServerVariables>
                    <add name="HTTP_HOST" />
                </allowedServerVariables>
            </rewrite>
        </system.webServer>
    </location>
本文链接:https://www.f2er.com/3154759.html

大家都在问