#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. Уважаемый Дин-Пэн, ваше решение не совсем то, которое ожидалось (я бы хотел переписать, а не перенаправить).. Но я приму ваше предложение. это работает, и это главное. Спасибо.