URL переписать IIS 7 - PullRequest
       2

URL переписать IIS 7

2 голосов
/ 11 июля 2010

Я пытаюсь выполнить простую перезапись URL. если вы зайдете на сайт azamsharp.com, он перейдет в какую-либо структуру просмотра папок и перейдет на http://www.azamsharp.com/AzamSharpWebApps/Default.aspx.

Я не хочу видеть AzamSharpWebApps в URL: Вот перезапись URL, которую я использую:

 <system.webServer>
    <rewrite>
      <rules>
        <rule name="Virtual Director" enabled="true" stopProcessing="false">
          <match url=".*" />
          <conditions>
            <add input="{MyDomains:{HTTP_HOST}}" pattern="(.+)" />
          </conditions>
          <action type="Rewrite" url="{C:1}{REQUEST_URI}" />
        </rule>
      </rules>
      <rewriteMaps>
        <rewriteMap name="MyDomains">
          <add key="azamsharp.com" value="/AzamSharpWebApps/default.aspx" />
          <add key="www.azamsharp.com" value="/AzamSharpWebApps/default.aspx" />
        </rewriteMap>
      </rewriteMaps>
    </rewrite>

  </system.webServer>

1 Ответ

1 голос
/ 05 августа 2010

Я не знаю, как работает IIS UrlRewrite, но на общем уровне регулярных выражений вы хотите заменить ^(?!/AzamSharpWebApps).+ на /AzamSharpWebApps/$0

^ - начало строки, а (?! .. ) - отрицательный взгляд, говорящий «убедитесь, что следующий текст не является / AzamSharpWebApps», а затем. + Соответствует любому символу до конец строки.

На стороне замены $0 указывает весь захваченный текст - так что в основном регулярное выражение говорит "если оно еще не начинается с" / AzamSharpWebApps ", добавьте к нему префикс.

(Вам нужно будет поэкспериментировать с тем, нужен ли вам / до $ 0 или нет.)

Во всяком случае, похоже, что IIS использует {C:0} вместо $0, просто чтобы быть другим, поэтому я думаю, что это будет выглядеть примерно так внутри правила:

<match url="^(?!/AzamSharpWebApps).+" />
<action type="Rewrite" url="/AzamSharpWebApps{C:0}" />

Но, возможно, для этого нужно нечто большее.

...