Я пытаюсь записать URL-адреса внутри своих веб-приложений, как входящих, так и исходящих, используя URL-переопределитель IIS следующим образом:
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}
Но теперь, для Исходящих, я бы хотелиметь тот же эффект, так что пользователь фактически видит 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.
Кто-нибудь знает, как переписать это исходящее правило, чтобы оно фактически перехватывало каждую ссылку независимо от того, как я на нее ссылался?
Спасибо,
Деннис
Edit:
Некоторые примеры, так как я полагаю, что я не был настолько ясен, как яhought:
Пользователь вводит www.domain.com/Login
в браузере, Inbound-Rule перехватывает и перенаправляет на www.domain.com/Login.aspx
, но показывает /Login
в адресной строке, это поведение хорошо.
Однако, когдаЯ нажимаю, например, кнопку asp: с PostBackUrl Login.aspx
. В адресной строке будет отображаться Login.aspx
вместо желаемого Login
, как получить именно такое поведение?