94

В моей папке apache www (/var/www на Ubuntu 10.10) у меня есть:

mydir -> /home/user/mydir

(что я создал с помощью ln -s)

Теперь, если я хочу увидеть список файлов в mydir из Интернета, я должен дать apache директиву FollowSymLinks , верно?

Но куда я это положу? В файле .htaccess ? Куда? Я пробовал много способов, но я не понимаю этого ...

Это мой файл /etc/apache2/sites-enabled/000-default :

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks Indexes
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    Alias /downloads/ "/root/mydir/"
    <Directory "/root/mydir">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

4 ответа4

62

Здесь есть две вещи:

  1. симлинки
  2. список каталогов

симлинки

Предполагая, что /var/www является вашим DocumentRoot для вашего виртуального хоста по умолчанию, вы должны найти файл конфигурации виртуального хоста по умолчанию (вероятно, /etc/apache2/sites-enabled/000-default) и поместить его в этот блок виртуального хоста, например

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

Если вы ничего не изменили, эта опция уже должна быть.

список каталогов

Чтобы Apache составлял список файлов в каталоге, вам также нужно включить опцию Indexes , например, изменить

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

в /etc/apache2/sites-enabled/000-default :

    <Directory />
        Options FollowSymLinks Indexes
        AllowOverride None
    </Directory>

Или, возможно, более безопасный способ изменить это на:

    <Directory />
        Options FollowSymLinks
        AllowOverride Indexes
    </Directory>

и поместите это в /home/user/mydir/.htaccess .

    Option Indexes

почему .htaccess не работает

По умолчанию размещение Options <something> в файле .htaccess не будет работать из-за другой записи в вашем файле конфигурации: AllowOverride None .

Вот почему мы должны поместить AllowOverride Indexes .

(Документация AllowOverride)

10

Опция должна использоваться следующим образом:

Options +FollowSymLinks

Обычно он помещается в конфигурацию Apache (httpd.conf или conf.d/ или sites-enabled/) внутри <Directory> .

См. Options, AllowOverride и <Directory> в документации Apache.

10

В исходной (свежей) конфигурации на Ubuntu 14.04 с apache 2.4.7 нет необходимости что-либо менять в * .conf, чтобы следовать символическим ссылкам, созданным в /var /www /html.

Но необходимо, чтобы пользователь www-data имел доступ ко ВСЕМ путям назначения символических ссылок (даже для виртуальных хостов, а не только для симлинков). Например,

cd /var/www/html
ln -s /path/to/mirror/cran-mirror cran

В этом примере пользователь WWW-данные (или все пользователи , если вы хотите, но может быть опасен) потребность выполнять права на всем пути к каталогу. Требуется x прав в каждом из /path, /path /to и /path /to /mirror. Также необходимо разрешение на чтение для целевого каталога, и, в зависимости от цели каталога, возможно, пользователю www-data также нужны разрешения на запись.

Подсказка была получена с https://stackoverflow.com/a/14623574

1

Я не мог заставить это работать, пока не установил модуль apin autoindex. Из многочисленных постов в блогах и на форуме никто не упомянул, что это необходимо. Надеюсь, это кому-нибудь поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .