Проблема с настройкой .htaccess

BS
На сайте с 21.10.2006
Offline
0
984

Привет!

Проблема:

Есть обычный открытый файловый сервер xttp://server.site.com/ (любой, набрав адрес, попадает в древовидный каталог с файлами).

Нам нужно сконфигурировать .htaccess так, чтобы в корневую папку (xttp://server.site.com/) и поддиректории (xttp://server.site.com/dir1/) этого сервера можно было зайти только с паролем, но скачивать файлы с сервера (которые расположены и в корневой, и в поддиректориях) можно было без набирания пароля. То есть, пароль следует ставить на директории, а не файлы.

Как это реализовать? Спасибо.

Pike
На сайте с 13.07.2004
Offline
79
#1

Проще наверное отдавать содержимое директорий через index.php, который закрыть поролем.

free hosting (http://rahost.com)
skady
На сайте с 28.02.2006
Offline
71
#2
Pike:
Проще наверное отдавать содержимое директорий через index.php, который закрыть поролем.

угу. например сделать файл file.php с параметрами в get: логин, пароль, имя файла

И потом

if (check_password($_REQUEST["login"], $_REQUEST["password")) {

$file = file_get_contents($_REQUEST["filename"]);

echo $file; // Только заголовок ещё хорошо бы к нему

};

Обмен ссылками с сайтами развлекательной тематики (сайт ЯК, DMOZ) (http://dotapick.ru/catalog/add.html)
Pike
На сайте с 13.07.2004
Offline
79
#3

Или я чего-то не понял, или одно из двух.

BekaS

Паролем закрыты только листинги, а файлы свободные? Т.е. любой имещий линк может скачать их без пороля?

skady

Вот это уж точно проще в .htaccess сделать

Bor-ka
На сайте с 16.11.2004
Offline
201
#4
Pike:
Проще наверное отдавать содержимое директорий через index.php, который закрыть поролем.

Угу, сервер быстро загнется на больших файлах в двух случаях, если читать кусками по N Кб или читать все сразу (памяти никакой не хватит).

Сервис полуавтоматического рерайта текста (http://topwriter.ru/)
BS
На сайте с 21.10.2006
Offline
0
#5

Pike паролем закрыты только адреса директорий (ну да, если зайти в директорию, то будет виден листинг)

если дать человеку адрес, например

xttp://server.site.com/

xttp://server.site.com/directorylala/

тогда нужно ввести пароль, чтобы увидеть перечень файлов (листинг по вашему).

если человеку дать линк на файл, находящийся в одной из директорий или в корне

xttp://server.site.com/music.mp3

xttp://server.site.com/directorylala/film.avi

тогда пароль не требуется и скачивать может любой.

Pike
На сайте с 13.07.2004
Offline
79
#6

BekaS

См. мой первый ответ. Самое то ☝

Pike
На сайте с 13.07.2004
Offline
79
#7

Bor-ka

Вообще-то это нужно делать readfile'ом - и все будет путем. Только вот топикстартеру оно не надо ;) Потому как скрипт не будет отдавать файлы, а только листинг директории.

Sanchoys
На сайте с 03.08.2006
Offline
41
#8

создаешь файлик .htaccess, в нем пишешь:

RewriteEngine On

RewriteRule ^(.*/)$ /index.php?dir=$1

Создаешь файлик index.php:


<?
/*
AUTHENTICATION

*/
$logined=false;
if(@$_SERVER['PHP_AUTH_USER']=='admin' && @$_SERVER['PHP_AUTH_PW']=='123456')
$logined=true;

if (!$logined) {
Header("WWW-Authenticate: Basic realm=\"Access Denied! =)\"");
Header("HTTP/1.0 401 Unauthorized");
$_SERVER['REMOTE_USER'] = "";
$_SERVER['REMOTE_PASSWORD'] = "";
$_SERVER['PHP_AUTH_USER'] = "";
$_SERVER['PHP_AUTH_PW'] = "";
echo "Листинг недоступен.";
die();
}
/*
END OF AUTHENTICATION
*/
if (!isset($_GET['dir'])) $_GET['dir']='.';
// небольшая защита от просмотра каталогов выше самого index.php
$l=realpath('.');
if (substr(realpath($_GET['dir']),0,strlen($l))!=$l) die('Недопустимый путь');

// Выводим список файлов:
$d=opendir(realpath($_GET['dir']));
while ($file=readdir($d))
{
echo "<a href=\"$file\" ".(is_dir(realpath($_GET['dir']).'/'.$file)?'style="font-weight: bold"' : '').">$file</a><br>\n";
}
closedir($d);
?>

Получается так, что листинг защищен паролем, а если идет запрос к файлу - пароль не требуется и скрипт вообще отдыхает - трудится только апач =)

Простая и удобная оценка стоимости продвижения (http://alexmedv.ru/ya/index.php?action=registration&invitation=734294e0058c860aa868c0033568184774c83963) Регистрация на бирже статей - SeoZavr (http://www.seozavr.ru/index.php?id=3316) Регистрация в Sape (http://www.sape.ru/r.73235979bd.php)
BS
На сайте с 21.10.2006
Offline
0
#9

Спасибо всем, кто помог.

Sanchoys, я с тобой свяжусь, мне кажется что у тебя ошибки в написанном скрипте...

Sanchoys
На сайте с 03.08.2006
Offline
41
#10

скрипт проверял, у меня все работало

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий