Как использовать URL Rewrite на IIS для единой базы кода для нескольких сайтов в PHP - PullRequest
0 голосов
/ 12 марта 2010

Я использовал Apache Mod Rewrite для PHP, но не в IIS.

ФОН:

Я унаследовал более 400 сайтов на IIS с PHP, все с копией идентичной кодовой базы. Текущая база кода имеет уникальную строку подключения для каждого клиента, поэтому она копируется снова и снова.

Каждый из них является поддоменом, указывающим отдельный сайт в IIS:

  • customer1.mysite.com
  • customer2.mysite.com

Я использовал Sessions и PHP, чтобы добраться до единой базы кода, где каждый сайт указывает на свою собственную директорию, которая содержит один PHP-файл, который извлекает переменные из главной таблицы базы данных и помещает их в строки Session, используя виртуальный каталог для теперь единая база кода.

Но теперь я хочу сделать еще один шаг вперед. Идея для этого пришла от использования Zend bootstrap с Apache.

Мой следующий шаг - исключить отдельные файлы PHP и использовать файл начальной загрузки вместе с единой базой кода в одном каталоге на одном сайте IIS. www.mysite.com

ВОПРОС

Я хочу знать, возможно ли сделать правило перезаписи, чтобы любой поддомен на mysite.com перешел на mysite.com/bootstrap.php, таким образом, customer1.mysite.com перешел на www.mysite.com/bootstrap.php и customer2.mysite.com переходит на www.mysite.com/bootstrap.php, но поддомен остается в курсе - даже если это всего лишь один сайт.

Так что вызов: customer1.mysite.com идет на www.mysite.com и загрузчик может прочитать субдомен, посмотреть параметры сайта, разместить их в сеансах, а затем разрешить доступ к сайту.

Или, если вам известен лучший способ сделать это, пожалуйста, дайте мне знать, но я не могу изменить более 400 поддоменов, которые клиенты используют для доступа к продукту.

Ответы [ 2 ]

1 голос
/ 12 марта 2010

Если вы используете ISAPI Rewrite (ModRewrite для IIS), ваш bootstrap.php может посмотреть HTTP-заголовок «X-Rewrite-URL», который является исходным неизмененным URL-адресом, и принять решение о что показать на основе этого.

0 голосов
/ 12 марта 2010

Перезапись не будет работать, поскольку подстановочный знак недопустим. Поэтому мне пришлось добавить каждый поддомен в одну папку. Немного больше работы, но это решило проблему.

...