Перейти к содержимому

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

87

В моей папке 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 $/error.log  # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn  CustomLog $/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> 
314 804 просмотра
luca спросил 15 лет назад
L 720

4 ответа

59
Принятый ответ

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

  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 )

посмотрите на мой конфигурационный файл выше ... он еще не работает ...

luca · 15 лет назад · 0

это может быть проблема разрешений? Я пользователь root, я знаю, что использовать систему в качестве пользователя root не очень хорошо. В любом случае, я являюсь пользователем root, а каталог, на который я ссылаюсь, находится в корневом каталоге home / root / mydir.

luca · 15 лет назад · 0

Да. Какое сообщение об ошибке вы видите? Вам нужно будет выполнить sudo chmod ugo + x / root; sudo chmod ugo + rx / root / mydir, чтобы это работало, и это, вероятно, не очень хорошая идея. Лучше переместить файлы куда-нибудь в / var / www, если можете.

Mikel · 15 лет назад · 1

Всякий раз, когда вы получаете ошибку и просите о помощи, вы должны предоставить нам точное сообщение об ошибке. И будут подсказки в / var / log / apache2 / error.log.

Mikel · 15 лет назад · 0

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

luca · 15 лет назад · 0

Убедитесь, что вы не указываете на свой домашний каталог, если он у вас зашифрован, то есть символическая ссылка в / var / www / home / user / directory. Это вызовет огромную головную боль.

· 14 лет назад · 6

+1 наконец человек знает как - объяснить изменения конфигурации в понятной форме ...

Yordan Georgiev · 11 лет назад · 0
rogerdpack · 8 лет назад · 0
Mikel ответил 15 лет назад
M 7 480
10

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

Options +FollowSymLinks 

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

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

В частности, в случае FollowSymLinks он ДОЛЖЕН быть внутри структуры Справочника, когда находится внутри файла .conf. Из текущего руководства Apache «Параметры FollowSymLinks и SymLinksIfOwnerMatch работают только в разделы или файлы .htaccess. "
ClearCrescendo · 12 лет назад · 1

Предупреждение: смешивание опций с + или - с теми, у кого нет, не является допустимым синтаксисом и может привести к неожиданным результатам.

kurdtpage · 8 лет назад · 1
grawity ответил 15 лет назад
G 229 123
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

victe ответил 11 лет назад
V 111
1

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

originalbryan ответил 11 лет назад
O 111