Как перенаправить URL-путь в IIS? - PullRequest
36 голосов
/ 20 мая 2009

В IIS 6.0 есть простой способ перенаправить запросы в папку в другую папку, сохранив при этом оставшуюся часть пути.

, например

Если я переместил содержимое из:
mysite.org.uk/stuff
до
stuff.mysite.org.uk/

Могу ли я автоматически перенаправлять запросы на определенные страницы, такие как
mysite.org.uk/stuff/countrybriefing/tanzania/travel.html
до
stuff.mysite.org.uk/countrybriefing/tanzania/travel.html

Я знаю, что .htaccess может делать подобные вещи в Apache, есть ли эквивалент в IIS?

Ответы [ 4 ]

35 голосов
/ 20 сентября 2009

Отформатируйте URL перенаправления следующим образом:

stuff.mysite.org.uk$S$Q

$S скажет, что любой путь должен быть применен к новому URL. $Q говорит, что любые переменные параметров должны быть переданы в новый URL.

В IIS 7.0 необходимо включить параметр Redirect to exact destination. Я считаю, что такая опция должна быть и в IIS 6.0.

31 голосов
/ 20 мая 2009

Взято из Microsoft Technet .

Перенаправление веб-сайтов в IIS 6.0 (IIS 6.0)


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

Вы можете перенаправить запросы на файлы из одного каталога в другой каталог, на другой веб-сайт или в другой файл в другом каталоге. Когда браузер запрашивает файл по исходному URL-адресу, веб-сервер указывает браузеру запросить страницу с использованием нового URL-адреса.

Важно

Вы должны быть членом группы администраторов на локальном компьютере, чтобы выполнить следующую процедуру или процедуры. В целях обеспечения безопасности войдите на компьютер, используя учетную запись, которая не входит в группу «Администраторы», а затем с помощью команды runas запустите IIS Manager от имени администратора. В командной строке введите runas / user: Administrative_AccountName "mmc% systemroot% \ system32 \ inetsrv \ iis.msc".

Процедуры

Для перенаправления запросов на другой веб-сайт или в каталог


  1. В IIS Manager разверните локальный компьютер, щелкните правой кнопкой мыши веб-сайт или каталог, который вы хотите перенаправить, и выберите Свойства.

  2. Перейдите на вкладку Домашний каталог, Виртуальный каталог или Каталог.

  3. В разделе Источник этого источника выберите Перенаправление на URL.

  4. В поле Redirect to введите URL-адрес конечного каталога или веб-сайта. Например, чтобы перенаправить все запросы на файлы в каталоге Catalog в каталог NewCatalog, введите / NewCatalog.

Чтобы перенаправить все запросы в один файл


  1. В IIS Manager разверните локальный компьютер, щелкните правой кнопкой мыши веб-сайт или каталог, который вы хотите перенаправить, и выберите Свойства.

  2. Перейдите на вкладку Домашний каталог, Виртуальный каталог или Каталог.

  3. В разделе Материалы для этого источника, выберите Перенаправление на URL.

  4. В поле Redirect to введите URL целевого файла.

  5. Установите флажок Точный URL-адрес, указанный выше, чтобы веб-сервер не мог добавить исходное имя файла к целевому URL-адресу.

    Вы можете использовать подстановочные знаки и переменные перенаправления в целевом URL-адресе, чтобы точно контролировать, как исходный URL-адрес переводится в целевой URL-адрес.

    Вы также можете использовать метод перенаправления для перенаправления всех запросов файлов в определенном каталоге в программу. Как правило, вы должны передавать любые параметры из исходного URL в программу, что вы можете сделать, используя переменные перенаправления.

    Для перенаправления запросов в программу


  6. В IIS Manager разверните локальный компьютер, щелкните правой кнопкой мыши веб-сайт или каталог, который вы хотите перенаправить, и выберите Свойства.

  7. Перейдите на вкладку Домашний каталог, Виртуальный каталог или Каталог.

  8. В разделе Контент для этого источника выберите Перенаправление на URL.

    В поле Redirect to введите URL-адрес программы, включая все переменные перенаправления, необходимые для передачи параметров в программу. Например, чтобы перенаправить все запросы на сценарии в каталоге Scripts в программу ведения журнала, которая записывает запрошенный URL-адрес и любые параметры, переданные с помощью URL-адреса, введите /Scripts/Logger.exe?URL=$V+PARAMS=$P. $ V и $ P - переменные перенаправления.

  9. Установите флажок Точный URL-адрес, указанный выше, чтобы веб-сервер не мог добавить исходное имя файла к целевому URL.

4 голосов
/ 20 мая 2009

Если у вас есть множество перенаправлений для создания, наличие виртуальных каталогов в разных местах - это кошмар для обслуживания. Вы можете попробовать использовать ISAPI перенаправить расширение IIS. Тогда все ваши перенаправления управляются в одном месте.

http://www.isapirewrite.com/docs/

Это также позволяет вам сопоставлять шаблоны, основанные на выражениях reg ex и т. Д. Я использовал там, где мне приходилось перенаправлять сотни страниц, и это экономило много времени.

1 голос
/ 09 июля 2009

Вот конфигурация для ISAPI_Rewrite 3 :

RewriteBase /

RewriteCond% {HTTP_HOST} ^ mysite.org.uk $ [NC]

RewriteRule ^ stuff /(.+)$ http://stuff.mysite.org.uk/$1 [NC, R = 301, L]

...