Назад | Перейти на главную страницу

Ссылки на элементы вне корневого веб-сайта

Вот как каталоги расположены на моем сервере (я унаследовал это и в данный момент не могу изменить):

/var/www/<stuff for the web>

/home/project/src/static/<some CSS, some JavaScript, etc.>

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

<link rel="stylesheet" href="/home/project/src/static/css/<file>.css" type="text/css" />
<script src="/home/project/src/static/lib/<file>.js" type="text/javascript"></script>

Я получаю ошибку 404 для каждого файла, который я пытался включить таким образом. Я изменил путь к «домашнему» каталогу, пытаясь перейти от /var/www/ к /home/ добавляя .. до начала строки пути, но без радости.

Затем, убедившись, что mod_alias установлен, я приступил к добавлению директивы псевдонима пути в свой файл конфигурации:

Alias /home/project/src/static/ /home/project/src/static/
<Directory /home/project/src/static/>
    Order allow,deny
    Allow from all
</Directory> 

Перезапустил Apache, но все равно не повезло. Я пробовал это с косой чертой и без нее.

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

Что я могу сделать, чтобы эти файлы можно было найти в корневом веб-каталоге, помимо копирования каталога и помещения его в корневую веб-папку?

Два варианта ... один - просто использовать Псевдоним правильно ... первый путь относительно веб-каталога, как если бы у вас http://yoursite/static в браузере вы должны использовать:

Alias /static/ /home/project/src/static/

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

mkdir /var/www/static/

А потом в fstab:

/home/project/src/static/ /var/www/static/ bind defaults 0 0

И чтобы применить изменения:

mount -a

или одноразовое крепление:

mount --bind /home/project/src/static/ /var/www/static/

Крепление на привязи - не всегда лучший или самый простой выбор ... могут случиться забавные вещи, например. бегать rm -rf /var/www/* и ваш /home/project/src/static/* тоже будут удалены.