#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. Это сэкономило мне много времени! Спасибо