2015-03-28 7 views
0

есть решение ASP.NET и хотите достичь 2 вещи: -WebConfig URL Перезапись в IIS

  1. Перенаправление www.mydomain.com в mydomain.com
  2. Есть дружественные URL-

Итак ... вот что я добавил раздел system.webServer в WebConfig ...

<rewrite> 
     <rules> 
     <rule name="Remove WWW prefix" > 
      <match url="(.*)" ignoreCase="true" /> 
      <conditions trackAllCaptures="false"> 
      <add input="{HTTP_HOST}" pattern="^www\.mydomain\.com" /> 
      </conditions> 
      <action type="Redirect" url="{MapProtocol:{HTTPS}}://mydomain.com/{R:1}" redirectType="Permanent" /> 
     </rule> 
     <rule name="homepage" stopProcessing="true" > 
      <match url="^/wwwzone/homepage.aspx$"/> 
      <action type="Redirect" url="/"/> 
     </rule> 
     <rule name="homepageReal" stopProcessing="true" > 
     <match url="^/$"/> 
     <action type="Rewrite" url="/somepath/homepage.aspx"/> 
     </rule> 
     </rules> 
     <rewriteMaps> 
     <rewriteMap name="MapProtocol"> 
      <add key="on" value="https"/> 
      <add key="off" value="http"/> 
     </rewriteMap> 
     </rewriteMaps> 
    </rewrite> 

Это терпит неудачу. Логикой этого является: -

  • Первое правило касается перенаправления www.mydomain.com на mydomain.com. Это работает. и с помощью команды rewriteMap он также правильно обрабатывает HTTP/HTTPS.
  • Второе правило должно выполнять перенаправление браузера, если запрашивает недружественный (реальный) URL-адрес.
  • Последний предназначен для преобразования дружественного URL-адреса обратно в реальный URL-адрес, однако это переписывание не перенаправление.

Любые мысли очень ценятся.

ответ

0

В наших регулярных выражениях наш плохой синтаксис.

Таким образом, соответствие реального URL домашней страницы должны быть

<match url="^$"/> 

не

<match url="^/$"/> 

и последующее правило переписать в реальный URL следует изменить таким же образом.

Итак, для полноты картины, это работает ...

<rewrite> 
     <rules> 
     <rule name="Remove WWW prefix" > 
      <match url="(.*)" ignoreCase="true" /> 
      <conditions trackAllCaptures="false"> 
      <add input="{HTTP_HOST}" pattern="^www\.mydomain\.com" /> 
      </conditions> 
      <action type="Redirect" url="{MapProtocol:{HTTPS}}://mydomain.com/{R:1}" redirectType="Permanent" /> 
     </rule> 
     <rule name="homepage" stopProcessing="true" > 
      <match url="^wwwzone/homepage.aspx"/> 
      <action type="Redirect" url="/"/> 
     </rule> 
     <rule name="homepageReal" stopProcessing="true" > 
     <match url="^$"/> 
     <action type="Rewrite" url="/somepath/homepage.aspx"/> 
     </rule> 
     </rules> 
     <rewriteMaps> 
     <rewriteMap name="MapProtocol"> 
      <add key="on" value="https"/> 
      <add key="off" value="http"/> 
     </rewriteMap> 
     </rewriteMaps> 
    </rewrite> 
Смежные вопросы