Перезапись URL-адреса IIS на основе корневого URL-адреса

#iis-7 #web-config #rewrite #relative-path #url-rewriting

#iis-7 #web-config #перезапись URL-адреса #относительный путь

Вопрос:

Я пытаюсь переписать URL-адрес:

www.mydomain.com/urlfolder/filename.aspx

указывать на

www.mydomain.com/urlfolder/newfile.aspx

Моя веб-конфигурация имеет следующее:

     <rule name="PageRedirection" enabled="true" stopProcessing="true">
      <match url="urlfolder/filename.aspx" />
      <action type="Redirect" url="urlfolder/newfile.aspx" redirectType="Permanent" />
    </rule>
  

проблема в том, что это улавливает URL-адреса, такие как:

www.mydomain.com/subdirectory/urlfolder/filename.aspx

Я попытался изменить свой URL на be, но ^ не сработало. Также кажется, что ~/ также не работает для указания root.

Как бы я мог указать этот URL-адрес из корня, без указания абсолютного пути.

У меня также есть:

testsite.mydomain.com/

и я хочу, чтобы там был развернут тот же web.config для работы. Спасибо!

Ответ №1:

Я знаю, что этому вопросу почти 4 года, так что вы, вероятно, уже давно перестали нуждаться в ответе.

^ должно сработать, хотя:

 <rule name="PageRedirection" enabled="true" stopProcessing="true">
    <match url="^urlfolder/filename.aspx" />
    <action type="Redirect" url="urlfolder/newfile.aspx" redirectType="Permanent" />
</rule>
  

^ указывает начало строки пути, поэтому все, что вы ставите после ^ , будет соответствовать только тому, что появляется сразу после корня сайта и косой черты.

например

www.example.com/urlfolder/filename.aspx

будет соответствовать.

www.example.com/subdirectory/urlfolder/filename.aspx

не соответствует.

Единственная причина, по которой я могу придумать, почему он будет соответствовать /subdirectory /urlfolder /filename.aspx, как вы говорите, заключается в том, что в / subdirectory/ есть копия вашего web.config, и в этом случае www.example.com/subdirectory/ рассматривается как root.

Если это так, и ваш web.config копируется в места, отличные от вашего корневого каталога, другим вариантом является добавление правила в %windir%system32inetsrvconfigApplicationHost.config вместо web.config. Это файл, содержащий все настройки, которые применяются ко всем службам IIS на вашем компьютере, а не только к определенному сайту. По моему опыту, Visual Studio откажется открывать этот файл. Однако вы можете отредактировать файл в другом редакторе или установить правила перезаписи через графический интерфейс IIS.

В графическом интерфейсе, на верхнем уровне дерева файлов, инструменты, доступные на этом уровне, включают утилиту перезаписи URL, а установленные там правила записываются в applicationHost.config.

Надеюсь, это поможет

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

1. Это сэкономило мне много времени! Спасибо