LINUX.ORG.RU
ФорумAdmin

Apache2(httpd CentOS 7). Несколько сайтов на одном хосту

 , ,


0

1

Server version: Apache/2.4.6 (CentOS)

Сервер доступен из локалки http://web01.site.ru

В /etc/httpd/conf/conf.httpd Указано: DocumentRoot «/var/www/html»

Размещаю тут несколько каталогов/сайтов

  • /var/www/html/site1
  • /var/www/html/site2
  • /var/www/html/site3

В браузере в локальной сети все работает:

НО, как только я добавляю в эти папки подпапки, например:

  • /var/www/html/site1/js
  • /var/www/html/site2/js

То обращение из /var/www/html/site1/index.html к файлам в этих подпапках, например: <script src="/js/script.js"></script>

НЕ РАБОТАЕТ.

web01.site.ru/:7 GET http://web01.site.ru/js/script.js net::ERR_ABORTED 404 (Not Found)

Попробовал настроить VirtualHost через обратный прокси

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /js http://web01.site.ru/site1/js
ProxyPassReverse /js http://web01.site.ru/site1/js

Работает, но это для каждого подкаталога надо настраивать и как это настроить для нескольких сайтов.

На форуме читал, что тут не нужны виртуальные хосты, но тогда как настроить? Базовый url прописывать на клиенте не вариант.



Последнее исправление: cfloat (всего исправлений: 3)

Ответ на: комментарий от thesis

Прошу прощения, исправил сообщение об ошибке. не должно быть слеша

cfloat
() автор топика

DocumentRoot «/var/www/html»

Размещать в DocumentRoot default-сайта другие сайты - некорректно.

Корректно - завести /var/www/site1 и сделать у этого виртхоста DocumentRoot туда.

Конечно, не работает. Пути /js/script.js нет, вместо него есть /site1/js/script.js

zemidius
()
Последнее исправление: zemidius (всего исправлений: 1)
Ответ на: комментарий от zemidius

т.е. все таки стоит попробовать виртуальные хосты? Буду пробовать.

Не хочется в файлах сайта прописывать текущий каталог: <script src="/site1/js/script.js"></script> Т.к. в конечном итоге каждый сайт размещается на отдельном хосте.

cfloat
() автор топика

На форуме читал, что тут не нужны виртуальные хосты, но тогда как настроить? Базовый url прописывать на клиенте не вариант.

Всегда прописывал VirtualHost для каждого сайта и не знал что это не правильно.

roco_constantin ★★
()
Ответ на: комментарий от cfloat

т.е. все таки стоит попробовать виртуальные хосты?

А, я подумал почему-то, что они уже есть.

Да, если виртхостов не хочется - надо использовать относительные пути, как посоветовали выше.

zemidius
()
Ответ на: комментарий от zemidius

Размещать в DocumentRoot default-сайта другие сайты - некорректно

ой ли! ты не знаешь какая у него инфраструктура.

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

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

ой ли! ты не знаешь какая у него инфраструктура.

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

другое дело - сайты должны уметь работать в сабдире

Кто ж спорит

zemidius
()
Последнее исправление: zemidius (всего исправлений: 1)
Ответ на: комментарий от zemidius

Поменяли DocumentRoot на /var/www
Все сайты перенесли туда
Настроили виртхосты
<VirtualHost *:80>
DocumentRoot /var/www/site1
ServerName site1
ServerAlias site1

<VirtualHost *:80>
DocumentRoot /var/www/site2
ServerName site2
ServerAlias site2

В скриптах переход js/script.js

Все работает, всем спасибо!

cfloat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.