Если файл *.log существует - запретить доступ, если не существует - обработать скрипт

Статус
В этой теме нельзя размещать новые ответы.

Holy Diver

Создатель
Регистрация
17 Авг 2009
Сообщения
22
Реакции
8
Есть .htaccess с содержанием:
Код:
<Files ~ "\.(xml|log)$">
	deny from all
</Files>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(gif|jpg|png|js|swf|zip|tgz|txt)$ pages.php

RewriteRule ^$ index.php [L]

Делаю мегакрутой модреврайт.

Допустим, есть файлы log1.log, log2.log, data.xml, pic.png, meta.html

При запросе файлов log1.log, log2.log, data.xml - вылезает ошибка Forbidden, то что нужно!

При запросе файла pic.png открывается картинка, то что нужно!

При запросе файла meta.html показывается этот же файл, то что нужно!

При запросе файла bum-bum.html вывод генерируется скриптом index.php, то что нужно!

Но, при запросе несуществующего файла log3.log выдаётся ошибка Forbidden, а хотелось бы чтобы обработка передавалась скрипту index.php.

Если кратко, хочу чтобы для всех существующих файлов с расширениями xml или log выдавался Forbidden, а если файл не существует - передавать обработку скрипту index.php. Все остальные существующие файлы должны выдаваться так как есть. Все остальные несуществующие файлы передавать на обработку скрипту index.php

Методом тыка и чтения документации сделать такое не удалось, помогите кто чем может =)
 
убери блок files? и замени на такое
Код:
Options -Indexes
Options +FollowSymlinks
RewriteEngine On
# если файла *.log нет, то грузим 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.log$ index.php [L]
# если такой файл есть, то подменяем его на код 403
RewriteRule ^(.+)\.log$ 403.php [L]
В файле 403.php отдаешь заголовок, что доступ не разрешен и пишешь текст
PHP:
<?
header ("HTTP/1.0 403 Forbidden"); 
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access *.log on this server.</p>
<hr>
<address>Apache Server at </address>
</body></html>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху