В моей папке 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>
Ответы:
Здесь есть две вещи:
симлинки
Предполагается
/var/www
, что DocumentRoot для вашего виртуального хоста по умолчанию, вы должны найти файл конфигурации виртуального хоста по умолчанию (вероятно/etc/apache2/sites-enabled/000-default
) и поместить его в этот блок виртуального хоста, напримерЕсли вы ничего не изменили, эта опция уже должна быть.
список каталогов
Чтобы сделать Apache списком файлов в каталоге, вам также необходимо включить
Indexes
опцию, например, изменитьв
/etc/apache2/sites-enabled/000-default
к:Или, возможно, более безопасный способ изменить это на:
и вставь это
/home/user/mydir/.htaccess
.почему .htaccess не работает
По умолчанию, помещая
Options <something>
в.htaccess
файл не будет работать из - за другой записи в файле конфигурации:AllowOverride None
.Вот почему мы должны положить
AllowOverride Indexes
туда.( Документация AllowOverride )
источник
sudo chmod ugo+x /root; sudo chmod ugo+rx /root/mydir
это, чтобы это работало, и это, вероятно, не очень хорошая идея. Лучше переместить файлы куда-нибудь под,/var/www
если можете./var/log/apache2/error.log
./var/www
→/home/user/directory
. Это вызовет огромную головную боль.Опция должна использоваться следующим образом:
Обычно он помещается в конфигурацию Apache (
httpd.conf
илиconf.d/
илиsites-enabled/
) внутри<Directory>
.Смотрите
Options
,AllowOverride
и<Directory>
в документации Apache.источник
В исходной (свежей) конфигурации на Ubuntu 14.04 с apache 2.4.7 нет необходимости что-либо менять в * .conf, чтобы следовать символическим ссылкам, созданным в / var / www / html.
Но необходимо, чтобы пользователь www-data имел доступ ко ВСЕМ путям назначения символических ссылок (даже для виртуальных хостов, а не только для симлинков). Например,
В этом примере пользователь WWW-данные (или все пользователи , если вы хотите, но может быть опасен) потребность выполнять права на всем пути к каталогу. Требуется x прав в каждом из / path, / path / to и / path / to / mirror. Также необходимо разрешение на чтение для целевого каталога, и, в зависимости от цели каталога, может быть, пользователю www-data тоже нужны разрешения на запись.
Подсказка была получена с https://stackoverflow.com/a/14623574
источник
Я не смог заставить это работать, пока не установил модуль apin autoindex. Из многочисленных постов в блогах и на форуме никто не упомянул, что это необходимо. Надеюсь, это кому-нибудь поможет.
источник