URL переписать -> для не www на www - что лучше и как?(уровень сайта или уровень приложения) - PullRequest
1 голос
/ 07 ноября 2011

Я делаю переписывание URL-адресов (Wildcards) для веб-сайта sigle на основе это сообщение в блоге . Вот что я попробовал:

<rewrite>
    <rules>
        <rule name="Redirect example.com to www" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="example.com" />
            </conditions>
            <action type="Redirect" url="http://www.example.com/{R:0}" />
        </rule>
    </rules>
</rewrite>

Эти коды прекрасно работают, и мы можем добавить их вручную на web.config веб-сайта или использовать перезапись URL в IIS.

Моя проблема в том, что у меня на IIS установлено много веб-сайтов (доменов и поддоменов - net, com, org), и я должен выполнить повторную работу для всех них!

Можно ли использовать другой способ перенаправления не www на www (уровень сайта или уровень приложения) для всех веб-сайтов? Если возможен уровень приложения, какие файлы конфигурации мне следует изменить? Не могли бы вы показать нам правильные символы или регулярные выражения?

1 Ответ

1 голос
/ 18 января 2012

Вы можете редактировать applicationHost.config (в каталоге %systemroot%\System32\inetsrv\config), чтобы он включал общие правила перезаписи URL для вашей установки IIS; следующие два правила (одно для HTTP, другое для HTTPS-запросов, если необходимо) делают именно то, что вам нужно:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="NonWwwToWwwRedirect" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{HTTPS}" pattern="off" />
          <add input="{HTTP_HOST}" pattern="^(?!www\.)(.+)$" />
        </conditions>
        <action type="Redirect" url="http://www.{HTTP_HOST}:{SERVER_PORT}" />
      </rule>
      <rule name="NonWwwToWwwRedirectSecure" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{HTTPS}" pattern="on" />
          <add input="{HTTP_HOST}" pattern="^(?!www\.)(.+)$" />
        </conditions>
        <action type="Redirect" url="https://www.{HTTP_HOST}:{SERVER_PORT_SECURE}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

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

...