Несколько динамических доменов с использованием одной установки Codeigniter - PullRequest
3 голосов
/ 07 октября 2011

Одной из моих задач является управление 58 объектами, расположенными по всей стране.У каждого из них есть свой домен, и все они размещены в одном и том же выделенном виртуальном сервере в Media Temple.Сайты, каждый из которых содержит около 19 страниц, используют один и тот же HTML / CSS / PHP-код.Изображения подаются на каждый сайт из центрального репозитория, расположенного в разных папках для каждой используемой темы.

Я хочу установить одну единственную установку CI2, включая папку приложения, потому что междусайты хранятся в базе данных.Пока я могу дать контроллеру уникальный номер свойства (что, я надеюсь, я смогу сделать, когда они получат доступ к странице index.php в каждом домене), все мои сайты будут работать нормально.

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

Возможно ли это?

Ответы [ 2 ]

12 голосов
/ 07 октября 2011

Если все файлы одинаковы, и единственное, что меняется между приложениями, это данные из базы данных, то вы можете сделать это:

  • Укажите все домены на ваш докут для установки CI
  • в вашем index.php, определите, какое соединение БД необходимо использовать для запрашиваемого в данный момент домена:

 // index.php
$domain = $_SERVER['SERVER_NAME'];
switch ($domain)
{
    case 'www.firstsite.com':
        $this->load->database('firstsitedb');
        break;
    case 'www.secondsite.com':
        $this->load->database('secondsitedb');
        break;
    default:
        show_error('No Site Found');
        break;
}

** ИЛИ **

Если каждый из них использует одну и ту же базу данных, и вам нужно иметь возможность использовать переменную в своих запросах, тогда просто установите константу на основе параметра / регистра вместо загрузки другой базы данных.Затем вы можете использовать эту константу в своем приложении в своих запросах.

 // index.php
$domain = $_SERVER['SERVER_NAME'];
$site_id = 0; // default
switch ($domain)
{
    case 'www.firstsite.com':
        $site_id = 1;
        break;
    case 'www.secondsite.com':
        $site_id = 2;
        break;
    default:
        show_error('No Site Found');
        break;
}
define('SITE_ID', $site_id);
0 голосов
/ 17 ноября 2014

В Codeigniter 2.2 теперь index.php позволяет устанавливать элемент массива конфигурации (эта возможность описана в этом файле).Таким образом, можно сохранить запрошенный домен как действующую переменную сайта, выполнив следующее:

$assign_to_config['site_domain'] = empty($_SERVER['SERVER_NAME']) ? 'default.dev' : $_SERVER['SERVER_NAME'];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...