Перезапись URL-адреса IIS не работает при попытке перенаправить поддомен на домен со строкой запроса

#redirect #iis #url-rewriting

#перенаправление #iis #URL-перезапись

Вопрос:

У меня есть то, что мне кажется простой задачей с перезаписью URL-адреса IIS.

Мне нужно перенаправить на основе поддоменов на основной домен со строкой запроса. Например

demo.domain.com необходимо перенаправить наwww.domain.com/?key=demo

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
    <rewrite>
            <rules>
                <rule name="Redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions trackAllCaptures="true">
                        <add input="{HTTP_HOST}" pattern="demo.domain.com" />
                    </conditions>
                    <action type="Redirect" url="www.domain.com/?key=demo" appendQueryString="false" redirectType="Found" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
  

Комментарии:

1. learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/…

2. Я просматривал эти документы бесчисленное количество раз, и я не приблизился к решению. Любые другие, более конкретные предложения?

3. Трассировка запроса с ошибкой — лучший способ проверить процесс перезаписи, только таким образом вы можете проверить шаги, чтобы найти, в чем проблема.

Ответ №1:

Что происходит, когда вы вводите цифру demo.domain.com ?

Попробуйте изменить свой код следующим образом :

 <rules>
    <rule name="Redirect" stopProcessing="true">
        <match url="(.*)" />
        <conditions trackAllCaptures="true">
            <add input="{HTTP_HOST}" pattern="^demo.example.com$" />
        </conditions>
        <action type="Redirect" url="http://www.example.com/?key=demo" appendQueryString="false" redirectType="Found" />
    </rule>
</rules>
  

Посмотрите на изменения в строке «добавить ввод =» и «тип действия =»