Как мне использовать перезапись URL IIS7, чтобы скрыть виртуальные каталоги? - PullRequest
0 голосов
/ 02 октября 2009

У меня есть сервер с IIS7, который я использую для размещения нескольких разных сайтов для тестирования. Из-за переизбытка бюрократии я не могу использовать заголовки хостов (я не могу получить новые записи на нашем внутреннем DNS-сервере, и пользователи не могут изменить свой файл локальных хостов).

Я настроил сайт по умолчанию в IIS, чтобы в нем не было ничего, кроме виртуальных каталогов с тестовыми версиями моих сайтов

Default Site
---> TestSite1
---> TestSite2

Поэтому, когда я прошу тестового пользователя проверить сайт, я говорю ему перейти на http://testserver/testsite1

Проблема в том, что сайты везде используют виртуальные пути, поэтому они не работают должным образом. Например, сайт ищет таблицу стилей с использованием /css/main.css, но не находит ее, поскольку в корне сайта по умолчанию нет папки /css. Слишком много таких вещей можно исправить, чтобы изменить работу сайта.

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

Ответы [ 2 ]

0 голосов
/ 02 октября 2009

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

Возможно, вы захотите рассмотреть что-то вроде обратный прокси , где у вас есть тестовый сервер с множеством виртуальных приложений, выступающих в качестве прокси для базовых приложений. Он может обрабатывать ответы и перезаписывать встроенные URL-адреса в правильные URL-пути (например, вставляя тег <base href=''>, как предлагает Ричард, или изменяя фактические ссылки HTML). Я полагаю, что могут быть обратные прокси, которые делают это из коробки, но у меня нет никакого опыта с этим. Если вам нужна помощь с этой опцией, я бы предложил перейти к Serverfault , поскольку настройка такой вещи больше ориентирована на сервер, чем на программирование.

0 голосов
/ 02 октября 2009

Не думаю, что переписывание поможет вам в этой ситуации.

Если вы можете изменить код, вы можете сделать что-то вроде добавления

<base href="http://testserver/testsite1/" /> на тег <head> вашего основного шаблона (если он у вас есть), поэтому абсолютный корень / всегда будет преобразован в правильный виртуальный каталог.

Я также видел, как люди используют код типа get_img('button.jpg'), который разрешает правильный путь с помощью логики на стороне сервера.

...