Как отобразить локальный каталог на localhost URL с помощью Apache?

Я просто хочу поместить простой веб-сайт PHP в пользовательский каталог на моей машине (скажите, что/home/znorg/foobar), и получают доступ к нему хотя apache2 на Ubuntu через что-то как http://localhost/foobar/

Извините, если это - повторное или слишком тривиальный вопрос, но я просто не могу найти простой ответ о том, как сделать просто это где угодно.

3
задан 5 March 2017 в 01:22

2 ответа

Другой подход к: URL Карт к местоположениям файловой системы с помощью конфигурации Apache. С этой целью необходимо использовать директиву Alias. Синтаксис:

Alias [URL-path] file-path|directory-path

Обратите внимание на то, что mod_alias требуется, но это идет с Apache2 по умолчанию. Можно проверить, установлено ли это через:

sudo apache2ctl -M | grep alias

Псевдоним может использоваться для каталогов и для файлов. Также это может использоваться на обоих уровнях:

  • Уровень сервера (в /etc/apache2/apache2.conf или в /etc/apache2/conf-avaliable/myAlias.conf) - псевдоним будет доступен для каждого активного Virtualhost;
  • VHost-уровень (в /etc/apache2/sites-avaliable/someVH.conf; промежуточный <VirtualHost > теги) - псевдоним будет доступен только для текущего VirtualHost.

Обратите внимание, что Вы, возможно, должны указать дополнительный <Directory> разделы, которые покрывают место назначения псевдонимов. Искажение происходит прежде <Directory> разделы проверяются, поэтому только место назначения псевдонимов затронуто.

В частности, если Вы создаете Псевдоним к каталогу за пределами Вашего DocumentRoot, Вы, возможно, должны явно разрешить доступ к целевому каталогу.

Вот, пожалуйста список некоторых за и против двух подходов: Псевдоним и SymLinks. Также проверьте этот комментарий.


Пример 1: псевдоним на VHost-уровне


Давайте предположим, что Вы хотите сделать Псевдоним на VirtualHost-уровне, и Ваш конфигурационный файл СПИДОБАРОГРАФА /etc/apache2/sites-available/000-default.conf. В этом случае конфигурационный файл должен выглядеть примерно так:

<VirtualHost *:80>

    # other VirtualHost directives

    Alias /foobar /home/znorg/foobar
    <Directory /home/znorg/foobar>
        Require all granted
    </Directory>

</VirtualHost>

Не забывайте перезапускать (или перезагрузка) сервер:

sudo systemctl restart apache2.service


Пример 2: псевдоним на уровне сервера


Давайте предположим, что Вы хотите сделать Псевдоним на уровне Сервера, и Вы не хотите затрагивать apache2.conf. В этом случае необходимо создать и включить дополнительный конфигурационный файл. В нашем примере это foobarAlias.conf, который должен быть помещен в каталог /etc/apache2/conf-available/.

Можно создать этот файл через (используйте ctrl+o для сохранения и ctrl+x для выхода):

sudo nano /etc/apache2/conf-available/foobarAlias.conf

И его содержание должно выглядеть примерно так:

Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
    Require all granted
</Directory>

Не забывайте включать новую конфигурацию и перезапуск (или перезагрузка) сервер:

sudo a2enconf foobarAlias && sudo systemctl restart apache2.service
2
ответ дан 1 December 2019 в 16:20

На основе комментария @George выше, это - то, что работало на меня:

1) Создают символьную ссылку в /var/www/html к желаемому каталогу:

sudo ln -s /home/znorg/foobar /var/www/html/foobar

2) конфигурационный файл шаблона Copy:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/foobar.conf

3) Затем в foobar.conf, ищите строку как:

DocumentRoot /var/www/html

И замена /var/www/html с /home/znorg/foobar

4) Включают новую конфигурацию:

sudo a2ensite foobar

5) Перезагрузка сервер:

service apache2 reload

Hope это полезно для кого-то еще.

1
ответ дан 1 December 2019 в 16:20

Другие вопросы по тегам:

Похожие вопросы: