#c# #.net #iis #url-rewriting #web-config
Вопрос:
Я написал правило, но оно не работает.
Мне нужно перенаправить testsite
с articles
помощью на about-park/blog
.
<rule name="Redirect Articles" enabled="true" stopProcessing="true">
<match url="articles" />
<conditions>
<add input="{HTTP_HOST}" pattern="^testsite.co.uk$" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/about-park/blog/" appendQueryString="false" />
</rule>
Если URL https://www.testsite.co.uk/articles/testpage
-адрес, то он должен перенаправляться на https://www.testsite.co.uk/about-park/blog/testpage
Аналогично, https://www.testsite.co.uk/articles/1/testing
чтобы https://www.testsite.co.uk/about-park/blog/1/testing
Комментарии:
1. работает ли ваш редирект, если вы удалите условия?
2. нет, это не работает, @AliReza
3. так что, вероятно, ваша проблема не связана с правилами. проверьте свой формат web.config и модули iis
4. попробуйте использовать этот шаблон
/testsite.co.uk/
5. нет, это не сработало
Ответ №1:
вы можете использовать функцию перезаписи.
например
<rule name="Articles">
<match url="^(.*)/articles/(.*)" />
<action type="Rewrite" url="{R:1}/about-park/blog/{R:2}" />
</rule>
примечание: просто измените Перезапись на перенаправление в типе действия, если вы хотите перенаправить.
Ответ №2:
Для этого требования вы можете обратиться к моему образцу правила перенаправления ниже:
<rule name="Articles">
<match url="^articles/(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.testsite.co.uk$" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/about-park/blog/{R:1}" />
</rule>
Пожалуйста, обратите внимание, что есть некоторые улучшения по сравнению с решением, предоставленным AliReza. Во-первых, если мы добавим /
раньше articles/(.*)
, это может не соответствовать правилу. Во-вторых, если URL-адрес запроса есть https://www.testsite.co.uk/abc/articles/testpage
, он будет перенаправлен https://www.testsite.co.uk/abc/about-park/blog/testpage
, если использовать его образец правила перенаправления.