Несколько сайтов с общими файлами - PullRequest
3 голосов
/ 13 ноября 2009

Я разработал более 50 сайтов, которые все используют одни и те же файлы, кроме CSS и IMAGES, в настоящее время я дублирую файлы каждый раз, когда создаю новый сайт и загружаю различные CSS и изображения.

Что было бы лучше, если бы вы просто делали это в 1 главном месте для всех распространенных файлов?

Вот моя текущая структура для каждого сайта:

/home/ftpuser/public_html/commonfile1.php
/home/ftpuser/public_html/commonfile2.php
.....
/home/ftpuser/public_html/commonfileN.php
/home/ftpuser/public_html/commonfolder1/
/home/ftpuser/public_html/commonfolder2/
.....
/home/ftpuser/public_html/commonfolderN/
/home/ftpuser/public_html/css/
/home/ftpuser/public_html/css/mycssfiles.css
/home/ftpuser/public_html/images/
/home/ftpuser/public_html/images/myimages.jpg

Как бы я сделал все обычные файлы, расположенные в 1 месте для каждого сайта, при этом имея возможность делать заказные css и изображения.

Я использую Apache, PHP, Centos

Ответы [ 5 ]

4 голосов
/ 13 ноября 2009

Я бы хотел, чтобы все ваши 50 виртуальных хостов использовали один и тот же DocumentRoot. Таким образом, вы гарантируете, что все сайты будут использовать одинаковые общие файлы.

Чтобы выбрать разные каталоги css и image, используйте директиву Alias, чтобы указать эксплицитные каталоги для каждого VirtualHost.

1 голос
/ 13 ноября 2009

Наиболее очевидное решение, если предположить, что все разные сайты размещены на одном сервере / файловой системе, будет чем-то похожим на:

+- common files (outside web root)
|
+- httpdocs (web root)
   |
   +--+- website 1 specific files
   |      |
   |      +- images (etc)
   |
   +--+- website 2 specific files
          |
          +- images (etc)

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

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

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

0 голосов
/ 13 ноября 2009

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

ln -s /home/ftpuser/public_html/commonfile1.php /home/ftpuser/public_html/commonfile2.php

Это разбивается на настройку общего хостинга, где участвуют разные пользователи (владельцы файлов).

0 голосов
/ 13 ноября 2009

Я думаю, что вы можете просто #include включить нужные файлы из основной папки, вам придется сделать его доступным со всех сайтов (использование программных ссылок заставит сервер думать, что они находятся в каталоге каждого сайта)

Использование программных ссылок облегчит проблему с путями, и вам не нужно будет использовать пути "вне" вашего каталога httpdocs.

0 голосов
/ 13 ноября 2009

Если все эти сайты находятся на одном сервере, вы можете просто включить файлы в ваш php-файл.

тогда вы можете просто включить их, как если бы они находились в том же каталоге, что и ваш текущий php-файл.

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