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

У меня есть настроенный веб-сайт в 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, который я не хочу перенаправлять.

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

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

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

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

Любая помощь будет оценена по достоинству.

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

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

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


person Carl    schedule 10.12.2008    source источник
comment
Привет, Карл, я только начал работать над этим типом перенаправления ... Я не уверен, куда вводить этот параметризованный тип перенаправления. Вы делаете это в IIS или непосредственно в метабазе? Или, может быть, в web.config? Я также использую IIS6. С уважением, Жак.   -  person Jacques    schedule 15.09.2011


Ответы (3)


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

person tvanfosson    schedule 10.12.2008
comment
Учитывая обновленный вопрос, в котором он упомянул, что ему не нравятся некоторые дополнительные сложности, это действительно решение с наименьшим влиянием. Сам реализовал и это несложно. Просто оставьте свой сайт как есть и настройте пользовательский 404, который загружает _redirect.asp, где вы выполняете response.redirect . Затем удалите все файлы, которые вам не нужны. Запросы к ним будут перенаправляться с использованием пользовательского 404. - person Christiaan Westerbeek; 12.08.2014

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

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

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

person dariom    schedule 10.12.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]
person Tomalak    schedule 10.12.2008