Назад | Перейти на главную страницу

Перезапись URL в IIS7

На сайте моей компании есть каталог http://website.net/files у которого есть неясные данные, которые использует половина компании. Он не соответствует нашей новой структуре сайта, и я хотел бы переместить его на новый сервер с DNS http://files.website.net. У меня проблема в том, что у многих пользователей по-прежнему будут ссылки, похожие на http://website.net/file/app.exe

Мне сказали, что перезапись URL-адреса - лучший вариант для принудительного перенаправления при сохранении запроса, но мне, кажется, что-то не хватает. Любая помощь будет оценена.

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="wordpress" patternSyntax="Wildcard">
          <match url="*" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" />
        </rule>
                <rule name="files" stopProcessing="true">
                    <match url="^files/(.*)" ignoreCase="true" />
                    <action type="Redirect" url="http://downloads.openeye.net/files/{R:1}" logRewrittenUrl="true" />
                </rule>
      </rules>
    </rewrite>
    <httpErrors>
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" prefixLanguageFilePath="" path="/index.php?error=404" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>
</configuration>

На вашем скриншоте несколько проблем:

  1. Шаблон регулярного выражения, который у вас есть в поле Pattern, будет соответствовать только числам после последней косой черты в URL-адресе. "files / subdir / 1234" будет соответствовать. "files / subdir / app.exe" не будет совпадать. Тебе нужно ^files/([_0-9a-z-]+)/(.*) в поле шаблона. Или, если все, что вам нужно, это что-нибудь с / files, вы можете использовать ^files/(.*). Функция Test Pattern - ваш друг.

  2. Я бы поставил флажок «Игнорировать случай», но это зависит от вашего конкретного сценария.

  3. Тип действия должен быть «Перенаправление».

  4. Предполагая, что вы используете ^files/(.*) для вашего шаблона регулярного выражения URL-адрес перенаправления должен быть: http://downloads.openeye.net/files/{R:1}

Это будет означать, что кто-то, кто входит http://yourdomain.com/files/whatever.exe будет перенаправлен на http://downloads.openeye.net/files/whatever.exe

Или если у них более длинный URL, например http://yourdomain.com/files/dir1/dir2/whatever.exe, он по-прежнему будет прикреплен к концу нового URL-адреса (http://downloads.openeye.net/files/dir1/dir2/whatever.exe).