Как создать общую папку для нескольких доменов на Dreamhost - PullRequest
0 голосов
/ 07 октября 2010

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

Я создал каталог на том же уровне, что и папки моего домена. Я хотел бы вызвать файл через что-то вроде этого ... /home/username/shared/file.php. Это не работает, однако, и я надеюсь, что какое-то волшебство (например, .htaccess возможно) сделает эту работу.

РЕДАКТИРОВАТЬ: Ой, хорошо, я могу включить файлы PHP, используя метод выше. Как включить в один каталог статические файлы, такие как Javascript, CSS, изображения и т. Д.?

Это работает:

<?php include('/home/username/shared/file.php'); ?>

Это не работает:

<link rel="stylesheet" type="text/css" href="/home/username/shared/reset.css" media="screen" />

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

Ответы [ 2 ]

0 голосов
/ 07 октября 2010

Включая статические файлы, такие как изображения, js, css, анализируются не сервером, а клиентом.Поэтому, когда клиент видит /home/user/shared/reset.css, он на самом деле пытается загрузить его следующим образом: www.domain.com/home/user/shared/reset.css

Самое простое, что вы можетепросто создайте папку где-нибудь на хостинге, а затем свяжите ее с папкой в ​​папках домена.

Так, например, у вас есть такая структура:

/home/
   user/
      domain1/
      domain2/
      domain3/

Вы можете легко создатьПапка для статического содержимого в / home / user, например / home / user / static_files, а затем для каждого домена, просто свяжите папку один раз через консоль (ssh):

ln -s /home/user/static_files /home/user/domain1/static_files
ln -s /home/user/static_files /home/user/domain2/static_files
ln -s /home/user/static_files /home/user/domain3/static_files

Строки выше создадуттак называемая символическая ссылка.Это означает, что он будет создавать только ярлыки в папках домена, и когда вы будете редактировать файлы в главной папке (/ home / user / static_files), изменения будут доступны в папках домена.

Теперь просто настройтеукажите следующий код:

<img src="/static_files/image.png" />
<script src="/static_files/somescript.js"></script>
<link rel="stylesheet" type="text/css" src="/static_files/reset.css" />

Это будет просто искать папку "static_files" в корне вашего домена.

0 голосов
/ 07 октября 2010

Вы должны быть счастливы, что <link rel="stylesheet" type="text/css" href="/home/username/shared/reset.css" media="screen" /> не сработало.Если бы это было так, у вас была бы большая дыра в безопасности.

Правильный способ - создать символическую папку для этого общего каталога в корневом каталоге вашего документа или использовать псевдонимы.

Метод Symlink

Запустите в оболочке следующее:

ln -s /home/username/shared /home/target/

Будет создана символическая ссылка с именем /home/target/shared, указывающая на /home/username/shared.Возможно, вам потребуется добавить директиву Options +FollowSymLinks в конфигурацию вашего сервера (или файл .htaccess)

Метод псевдонима

Этот метод требует изменения конфигурации вашего сервера (например, httpd.conf).).Добавьте к нему директиву Alias:

Alias /shared /home/username/target

Примечание: это будет использоваться только для запросов через ваш сервер (например, http://example/shared/reset.css), но не для файлов PHP.В файлах PHP вы должны использовать полный путь (/home/username/shared/file.php)


Какой метод вы выберете, зависит от вас.Последний проще в настройке, так как вам не нужно беспокоиться о разрешениях / владении.Первый может быть использован, если вам действительно нужно использовать /home/target/shared/file.php.

...