2013-10-09 2 views
3

Я рассматриваю использование модуля перезаписи IIS 2.0 для перенаправления некоторых сломанных ссылок на приложения.перенаправить подпапку на поддомен/подпапку с использованием URL-адреса IIS Rewrite

Раньше www.mydomain.com был нашим корпоративным сайтом, а www.mydomain.com/application1, www.mydomain.com/application2 были другими приложениями, которые использовали наши клиенты. Все они были на одном сервере.

Теперь мы обновляем наш корпоративный сайт и перемещаемся на другой сервер. Поэтому www.mydomain.com и mydomain.com разрешают использовать другой сервер. В рамках этой работы был создан субдомен app.mydomain.com для размещения клиентских приложений, которые все еще находятся на нашем сервере.

Что я хочу сделать, это установить модуль перезаписи на сервер нового корпоративного сайта и перенаправить www.mydomain/application1 или mydomain.com/application1 в app.mydomain.com/application1.

У меня есть список приложений, поэтому, возможно, использование rewriteMap - это путь? Это предотвратило бы неправильное перенаправление любых перенаправлений, таких как www.mydomain.com/newcorporateurl. Мне также нужно сохранить вложенные папки и запросы (из-за людей, имеющих закладки в браузере), например, www.mydomain.com/application1/index.aspx?id=1 нужно перейти на app.mydomain.com/application1/index.aspx?id= 1

Любая помощь, связанная с этим, была бы замечательной! Даже просто сортировка базовой конфигурации, поэтому я могу играть с ней и понять ее немного больше. Я просматривал другие вопросы и ресурсы, но я до сих пор изо всех сил, как поставить это вместе

Обновление 1

Ниже не работает, но, надеюсь, это показывает, что я пытаюсь сделать. У меня около 15 или приложений, которые мне нужно перенаправить таким образом.

<rewrite> 
    <rules> 
     <rule name="application1 rule" stopProcessing="true"> 
      <match url="(www\.)?mydomain\.com(:80)?/application1/?" /> 
      <action type="Redirect" url="app.mydomain.com/application1/" appendQueryString="false" /> 
     </rule> 
     <rule name="application2 rule" stopProcessing="true"> 
      <match url="(www\.)?mydomain\.com(:80)?/application2/?" /> 
      <action type="Redirect" url="app.mydomain.com/application2/" appendQueryString="false" /> 
     </rule> 
    </rules> 
</rewrite> 

Update 2

Я эту работу до такой степени

<rewrite> 
    <rules> 
     <clear /> 
     <rule name="application1 rule" stopProcessing="true"> 
      <match url="application1(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
      </conditions> 
      <action type="Redirect" url="http://app.mydomain.com/application1{R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 

Это будет перенаправлять

www.mydomain.com/application1 -> app.mydomain.com/application1 www.mydomain.com/application1/index.aspx -> app.mydomain.com/application1/index.aspx

Проблема, которую я хочу решить сейчас, это.

Новый сайт www.mydomain.com является CMS. С приведенным выше правилом это означает, что CMS не может содержать «application1» вообще в URI.

Реальный мир пример 'коммерческий'

Может кто-то пожалуйста, помогите рафинирования мое правило так верно следующее

www.mydomain.com/commercial -> app.mydomain.com/commercial WWW. mydomain.com/commercial/foo/index.aspx -> app.mydomain.com/foo/index.aspx

www.mydomain.com/tv-commercials/list -> www.mydomain.com/tv-commercials/list www.mydomain.com/commercial-property/list -> www.mydomain.com/коммерческая недвижимость/список

+0

Сколько у вас приложений? Любой шаблон здесь? (например, начиная с 'app'). Вы что-то пробовали? – cheesemacfly

+0

@cheesemacfly Я обновил вопрос с моей отправной точкой. Это не работает, но, надеюсь, демонстрирует, чего я пытаюсь достичь. –

ответ

1

Это то, с чем я столкнулся.

Первое правило просто перенаправляет на конечную косую черту, если URI - это www.mydomain.com/application1.

Второе правило перенаправляет на субдомен, игнорируя регистр, сохраняя запрос и рассматривая его как постоянную переадресацию.

<rule name="Trailing Slash Redirect" stopProcessing="true"> 
    <match url="^(application1|application2)$" ignoreCase="true" /> 
    <action type="Redirect" url="{R:0}/" redirectType="Permanent" /> 
</rule> 
<rule name="Http App Redirect" stopProcessing="true"> 
    <match url="^(application1/.*|application2/.*)$" ignoreCase="true" /> 
    <action type="Redirect" url="http://app.mydomain.com/{R:0}" redirectType="Permanent" /> 
</rule> 

Если у меня есть необходимость перенаправления на Https, я создам другое правило.

+0

Принимая это как ответ, так как это соответствовало моим потребностям в конечном итоге –

Смежные вопросы