Как я заставляю Apache следовать за символьными ссылками?

В моей апачской www папке (/var/www на человечности 10.10), я имею:

mydir -> /home/user/mydir

(что я создал с ln -s)

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

Но где я помещаю его? В a .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>
99
задан 05.10.2013, 22:17

2 ответа

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

  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)

66
ответ дан 07.12.2019, 07:56

Опция должна использоваться как это:

Options +FollowSymLinks

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

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

11
ответ дан 07.12.2019, 07:56

Теги

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