Изменить заголовок узла с помощью IIS URLRewrite - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть запросы на мой веб-сервер по адресу

http://www.example.com/blog

Я хочу переписать это на другой сервер, прослушивающий

http://blog.example.com

Вот мое правило переписывания:

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

В результате происходит перезапись, отправка запроса на IP второго сервера по адресу blog .mysite.com, но хост заголовка запроса по-прежнему www .mysite.com.

Как убедиться, что перенаправленный запрос HOST установлен на blog.mysite.com (который задан в правиле перенаправления)

1 Ответ

1 голос
/ 06 ноября 2019

Могу ли я узнать, как вы проверяли заголовок HOST?

Рекомендуется проверять переменную {HTTP_HOST} вместо непосредственного просмотра заголовка HTTP. Потому что, если вы просмотрите заголовок запроса, вы всегда увидите www.mysite.com.

Вы можете получить переменную запроса {HTTP_HOST} с внутреннего сервера blog.mysite.com.

Однако, еслиВы имеете в виду страницу в 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>

Пожалуйста, не забудьте разрешить переменную сервера {HTTP_HOST} при перезаписи URL.

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>
...