URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6445
[ Назад ]

Исходное сообщение
"Apache Options в зависимости от адреса клиента"

Отправлено Alive , 16-Июл-09 17:08 
Добрый день, уважаемые!
Есть следующая проблема:
Есть каталог "/dir" в котором лежат .html файлы и есть поисковый сервер, который должен эти файлы индексировать. Возможность "видеть" эти файлы обеспечивает апачевский
Options +Indexes.
Задача ограничить "Options +Indexes" так, чтоб автоиндекс показывался только нужному IP-адресу или user-agent, а для остальных чтоб возвращалась 403 ошибка, так как index-файла в каталоге нет. Но в то же время доступ к файлам в каталоге по ссылке вроде "/dir/somefile.html" оставался работать.
Вобщем как сделать так, чтоб для одних IP-адресов клиентов autoindex работал, а для других - нет?

Содержание

Сообщения в этом обсуждении
"Apache Options в зависимости от адреса клиента"
Отправлено Alive , 16-Июл-09 17:57 
Спасибо, разобрался сам.
1. Делаем симлинк исходной директории в другое имя:
ln -s dir otherdir
2. В конфиге апача описываем обе эти директории, при чем исходную с indexes, но доступом только с нужного адреса
    <Directory "/path/to/site/dir">
        AllowOverride none
        Options +Indexes
        Order deny,allow
        Deny From All
        Allow from 10.0.0.1
    </Directory>
А производную без indexes (-Indexes), но с доступом отовсюду:
    <Directory "/path/to/site/otherdir">
        AllowOverride none
        Options -Indexes
        Order allow,deny
        Allow from All
    </Directory>
3. Пишем реврайт в .htaccess:
RewriteCond %{REMOTE_HOST} !10.0.0.1
RewriteRule ^/dir/(.*\.html)   /otherdir/$1 [L]

Таким образом левый клиент заходя по ссылке, отдаваемой индексатором: http://site.com/dir/filename.html будет прозрачно переадресован в каталог otherdir, куда ему доступ разрешен, но не разрешен autoindex.