Mutliple сайты на одном сервере с общим кодом - PullRequest
0 голосов
/ 24 июня 2009

Я собираюсь сделать серию из 5 сайтов. Все они должны работать в одной системе. Я планирую сделать так, чтобы все они указывали на один и тот же сервер, а затем, в зависимости от того, какой домен используется для доступа к нему, будет обслуживаться разный контент / стили. Таким образом, по сути, это будет около 5 различных розничных сайтов, специализирующихся на конкретном типе продукта.

Но все они используют один и тот же внутренний код, так что его намного проще поддерживать. Я никогда не делал ничего подобного раньше и хочу знать, есть ли какая-то информация, которую я должен рассмотреть, или кто-нибудь знает хорошее место, которое объясняет, как сделать это хорошо?

Кроме того, мы не хостинг, а через хостинговую компанию (если это имеет значение).

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 июня 2009

Звучит довольно просто для меня:

Просто есть каталог:

/var/www/siteLibraries/foo.php

Или другой подходящий каталог. Тогда имейте

/var/www/site1/foo.php
/var/www/site2/foo.php

и настройку загрузки классов по умолчанию в PHP (http://uk.php.net/manual/en/language.oop5.autoload.php)), чтобы при создании экземпляра класса специализированным сайтом ... он выполнял поиск в локальных библиотеках сайта (для переопределений специалиста), а затем по умолчанию для общих библиотек. Вы также можете упорядочить содержимое таким образом.

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

Помните: ваш код для сайта должен специализироваться на базе кода по умолчанию (ООП отлично подходит для этого). Что не конкретно, поделился. Конечно, общая база кода должна знать, что она является общей, поэтому такие вещи, как logs должны указывать, какой конкретный сайт использовал библиотеку при возникновении ошибки и все такое.

Удачи

0 голосов
/ 24 июня 2009

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

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

Укажите все домены на один и тот же каталог, в котором находятся ваши скрипты, и определите, какой тип контента отправлять, основываясь на значении HTTP "Host".

т.е:.

$host = $_SERVER["HTTP_HOST"];

$rs = mysql_query("SELECT * FROM products WHERE website = '$host'");

// ...etc

N.B .: Этот код предназначен для иллюстративных целей. Как написано, это уязвимо для SQL-инъекций, вы должны защитить его соответствующим образом.

0 голосов
/ 24 июня 2009

В настоящее время я пишу систему управления контентом, которая решает эту проблему. Несколько вещей, которые мне показались полезными.

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

Для моей системы у меня есть отдельный файл шаблона для каждого сайта. Таким образом, я держу свои PHP и HTML отдельно, что делает вещи намного проще. Когда у меня был наименьший общий знаменатель, самой сложной задачей для меня было разделение сайтов.

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

У Эйдена также есть несколько хороших замечаний по конкретному коду. Для меня я обнаружил, что код не был проблемой, а скорее как я реализовал этот код для среды с несколькими сайтами.

Надеюсь, это поможет.

...