Проблема перезаписи IIS — как переписать начальный URL-адрес без пути на URL-адрес с помощью path

#iis #url-rewriting

#iis #перезапись URL-адреса

Вопрос:

Я хотел бы добавить правило «переписать» в мой IIS8

из: site1.mydomain.com /{R:1} кому: site2.anotherdomain.com/onelevelpath /{R:1}

на самом деле, мое правило :

 <rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
   <match url="(.*)" />
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
   </conditions>
   <action type="Rewrite" url="http://technofuturtic.wixsite.com/tftic-helpdesk-it/{R:1}" appendQueryString="true" />
</rule>
 

результат дает: http://site1.mydomain.com/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath/onelevelpath с ошибкой «запрос превышает максимальную длину»

Конечно, я понимаю проблему… но я не нахожу правильного решения?

  • изменить шаблон ?
  • добавить условие?

Кто-нибудь может мне помочь?

Спасибо.

E.

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

1. Привет @DingPeng. спасибо за ваш ответ. Нет, проблема не решена. На моем сайте, site1.mydomain.com это привязка. поэтому вы не можете использовать его в разделе «Входные данные для тестирования». И /{R:1} (или {R:0}, я думаю) является обязательным… потому что есть также путь и вложенный путь, которые нужно добавить к переписанному URL: site1.mydomain.com/***/***/*** кому : site2.anotherdomain.com/onelevelpath/***/***/***

2. Привет, проблема была решена? Если вы считаете, что мой ответ полезен для вас, вы можете пометить его как ответ.

Ответ №1:

Это связано с тем, что существует проблема с вашим правилом перезаписи URL:

введите описание изображения здесь

Вы можете видеть, что {R:1} в это время является site1.mydomain.com /{R:1}.

{R:1} имеет другие значения в URL Rewrite , для получения дополнительной информации об этом вы можете обратиться к этой ссылке.

Мое предложение состоит в том, чтобы избегать {R:1} в URL-адресе, что приведет к тому, что IIS перепутает значение {R:1}.

Еще один момент, который следует отметить, заключается в том, что если вы переписываете с одного домена на другой, вам необходимо использовать перенаправление.

Обновить:

Если вы хотите переписать site1.mydomain.com ///*** к site2.anotherdomain.com/onelevelpath ///***, вы можете использовать следующее правило перезаписи URL-адреса:

    <rewrite>
            <rules>
                <rule name="Test" stopProcessing="true">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^site1.mydomain.com$" />
                    </conditions>
                    <action type="Redirect" url="http://site2.anotherdomain.com/onelevelpath/{R:1}" />
                </rule>
            </rules>
        </rewrite>
 

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

1. Уважаемый Дин-Пэн, ваше решение не совсем то, которое ожидалось (я бы хотел переписать, а не перенаправить).. Но я приму ваше предложение. это работает, и это главное. Спасибо.