IIS6 - Как перенаправить пользователей на другой сайт для каждой страницы с несколькими исключениями? - PullRequest
4 голосов
/ 10 декабря 2008

У меня есть настройка веб-сайта в IIS 6, скажем, он называется http://www.this.com.

Я установил перенаправление для этого сайта на http://www.that.com, которое поддерживает структуру каталогов и параметры запроса следующим образом:

http://www.that.com$S$Q - с использованием опции «Точный URL-адрес введен выше»

Это прекрасно работает, когда кто-то просит, например:

http://www.this.com/subfolder/page.aspx?Id=1

затем они заканчиваются на:

http://www.that.com/subfolder/page.aspx?Id=1

Теперь у меня есть одна страница, на самом деле обработчик, http://www.this.com/image.axd,, которую я не хочу перенаправлять.

Какой синтаксис для этого? Я прочитал раздел Redirection Using Wildcards здесь , но я не могу понять, как сделать то, что кажется простым.

Обратите внимание, что image.axd является обработчиком, поэтому я не могу просто "щелкнуть правой кнопкой мыши" на нем и установить свойства перенаправления, поскольку он физически не существует.

У меня также есть пара других страниц в подпапках, которые я не хочу перенаправлять, например:

http://www.this.com/subfolder/donotredirectthispage.aspx

Буду признателен за любую помощь.

Редактировать: Несколько человек упомянули об использовании ISAPI_Rewrite, за что я благодарен, но я действительно не хочу вносить другую сложность в конфигурацию сайта. IIS, кажется, подразумевает, что я могу достичь того, что хочу, используя! и от 0 до 9 переменных.

Неужели это невозможно сделать с помощью IIS?

Мой текущий обходной путь - установить свойства перенаправления для ВСЕХ папок и страниц, которые я хочу перенаправлять, кроме тех, которые я не перенаправляю, но это кошмар управления.

Ответы [ 3 ]

1 голос
/ 10 декабря 2008

Вы можете реализовать пользовательскую страницу ошибки для ошибки page not found (404), которая выполняет перенаправление для вас. Вы бы отключили перенаправление в IIS. Создайте логику для перенаправления на своей странице ошибок. Затем настройте свой веб-сайт таким образом, чтобы 404 ошибки перенаправлялись на страницу ошибок.

0 голосов
/ 10 декабря 2008

Вы должны изучить возможность использования модуля перезаписи заголовка, например ISAPI_rewrite . Доступна бесплатная «облегченная» версия, которой достаточно для ваших нужд.

Для вас это может быть следующим: перед тем, как на сервере будут выполнены реальные страницы, заголовки запроса переписываются (или создаются перенаправления HTTP 301/302) на основе настраиваемого набора правил. Базовый сервер видит оставшиеся запросы так, как если бы клиент действительно делал их таким образом.

Следующие правила оставляют image.axd запросов в покое, а перенаправляют все остальное.

# image.axd stays unchanged ("L" is the "last rule" flag)
RewriteCond Host: www.\this\.com
RewriteRule ^.*?\bimage\.axd\b.* $0 [L]

# all requests that have not been stopped by an earlier rule
# end up here ("RP" is the "permanent redirect" flag)
RewriteCond Host: www.\this\.com
RewriteRule .* http://www.that.com$0 [RP,L]
0 голосов
/ 10 декабря 2008

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

Для IIS 6.0 я использовал ISAPI_Rewrite , и он работает очень хорошо. Это легкий и очень настраиваемый. Доступна бесплатная версия Lite, которая будет соответствовать вашим требованиям.

Вы конфигурируете программу, используя текстовый файл, содержащий правила, которые соответствуют HTTP-запросам, а затем записываете действия, которые нужно выполнить после сопоставления правила. Для вашего экземпляра, вероятно, потребуется общее правило перенаправления (аналогичное тому, которое есть в IIS) и правила для ваших исключений.

...