Я пытаюсь написать URL-адрес в моих веб-приложениях и сессионных и исходящие с использованием ИИСБОМ URLRewriter так:IIS URL Rewrite Outbound PostBackUrls
www.domain.net/SomeSite.aspx
к www.domain.net/SomeSite
с помощью этого RegEx для Входящего:
^([A-Za-z0-9]+)([\?A-Za-z0-9=&]+)?$
, много к моему удивлению, это на самом деле работает, а также для URL-адресов, таких как www.domain.net/SomeSite.aspx?abc=1
=>www.domain.net/SomeSite?abc=1
с использованием переписан действие: {R:1}.aspx?{R:2}
Но теперь, Outbound, я хотел бы иметь тот же эффект, так что пользователь видит на самом деле www.domain.net/SomeSite
, хотя мое веб-приложение может ссылаться на ~/SomeSite.aspx внутренне.
Я использую следующий RegEx для этого:
^([A-Za-z0-9]+).aspx([\?A-Za-z0-9=&#]+)?$
и переписать URL вроде так: /{R:1}{R:2}
В целом это работает, увы, не для, например, Response.Redirect
, выполненный в CodeBehind, и он также не работает для PostBackUrl
s с asp:Button
s.
Кто-нибудь есть идеи, как переписать это правило исходящего, так что он действительно ловит каждую ссылку независимо от того, как я на нее ссылался?
Спасибо,
Dennis
Edit:
Некоторые примеры, так как я предполагаю, что я не совсем ясно, как я подумал:
Пользователь вводит www.domain.com/Login
в браузере, Inbound-Rule уловы и перенаправления на www.domain.com/Login.aspx
пока не показывают /Login
в адресной строке, это нормально.
Однако, когда я нажимаю на то есть с осины: Кнопка с PostBackUrl Login.aspx
адресная строка будет отображаться Login.aspx
вместо желаемого Login
, как получить именно такое поведение?
Почему бы вам не изменить PostBackUrl на/Login вместо Login.aspx? Я думаю, что это должно сработать, по крайней мере, так я обрабатываю обычные якорные тэги (это избавляет Outbound от необходимости делать это!) – ianbailey
Да, это сработало бы, но было бы невероятно неудобно, так как мне нужно было сделать моя отладка в IIS вместо сервера разработки. –