Настройка htaccess FilesMatch / Allow Deny

12 3
nocomments
На сайте с 12.11.2009
Offline
189
16960

Похоже не понимаю сути работы этой системы.

Если запрашиваемый файл есть на диске в папке - никакие запреты Allow/Deny через FilesMatch или RewriteRule не срабатывают. (Если нет - тогда да).

Такая ерунда на нескольких серверах, везде Debian 5, ISP manager

Так и должно быть?

Это счастливая рефка: {жать сюда} (http://bit.ly/WbMR4O) тому, кто по ней разместит больше всего статей, будет сопутствовать счастье всю его оставшуюся, длинную, обеспеченную жизнь.
M
На сайте с 16.09.2009
Offline
278
#1
nocomments:
Похоже не понимаю сути работы этой системы.

Документацию читать пробовали?

http://httpd.apache.org/docs/2.2/

http://httpd.apache.org/docs/2.2/howto/auth.html

nocomments:
Если запрашиваемый файл есть на диске в папке - никакие запреты Allow/Deny через FilesMatch или RewriteRule не срабатывают.

Срабатывают. Но телепаты в отпуске, и что вы делаете не так - простые смертные не понимают...

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
Andreyka
На сайте с 19.02.2005
Offline
822
#2

Приведите правила и логи

Не стоит плодить сущности без необходимости
nocomments
На сайте с 12.11.2009
Offline
189
#3

пардон, слишком в общем отписал, уточню на примерах:

допустим в htaccess написано:

RewriteCond %{HTTP_USER_AGENT} Yandex*
RewriteRule \.(jpg)$ - [F]

заходим с юзерагентом яндекса, site.ru/image.jpg

- файл есть на диске: получаем картинку

- файла нет на диске: получаем 403 Forbidden

Изначально хотелось чтобы в обоих случаях было 403

Точно такая же ситуация если так:

<Files "\.(jpg)$">
RewriteCond %{HTTP_USER_AGENT} Yandex*
RewriteRule (.*) - [F]
</Files>

И даже если так:

<filesMatch "\.(jpg)$">
Order Allow,Deny
Deny from all
</filesMatch>

Проделываем то же самое на виртуальном хостинге с сипанелью - оба варианта 403

M
На сайте с 16.09.2009
Offline
278
#4
nocomments:

допустим в htaccess написано:

RewriteCond %{HTTP_USER_AGENT} Yandex*
RewriteRule \.(jpg)$ - [F]

заходим с юзерагентом яндекса, site.ru/image.jpg

- файл есть на диске: получаем картинку
- файла нет на диске: получаем 403 Forbidden

Изначально хотелось чтобы в обоих случаях было 403

Хотите дальше. Либо читайте документацию, никаких сюрпризов не будет.

С чего вы вообще взяли, что этот кусок правил работает? Yandex* - не регулярное выражение (CondPattern is usually a perl compatible regular expression). Правильнее: Yandex.*

И учитывайте, по-умолчанию тест чувствителен к регистру.

nocomments:
<filesMatch "\.(jpg)$">
Order Allow,Deny
Deny from all
</filesMatch>

Должно работать. Проблемой, скорее всего, являются другие правила - реврайты какие-либо и т.п.

siv1987
На сайте с 02.04.2009
Offline
427
#5

Запросы статики до апача доходят?

Так сначала попробуйте

RewriteEngine On

RewriteRule \.(jpg)$ - [F]

M
На сайте с 16.09.2009
Offline
278
#6
siv1987:
Запросы статики до апача доходят?

Кстати, да. nginx-то в ISP выключен?

Иначе статику будет отдавать nginx, а апач она минует. Скажите спасибо разработчикам ISP за проблему из ничего.

nocomments
На сайте с 12.11.2009
Offline
189
#7
myhand:
С чего вы вообще взяли, что этот кусок правил работает? Yandex*

Сделал такой вывод, потому что он совершенно корректно работает на виртуальных хостингах и потому что на тестируемом выдаёт 403 в случае, если файла нет на диске. (А не 404, если это правило убрать или если выключить подмену юзерагента).

myhand:
Проблемой, скорее всего, являются другие правила - реврайты какие-либо и т.п.

Не, нету больше ничего, только включение реврайтенжин.

siv1987:
Запросы статики до апача доходят?
Так сначала попробуйте
RewriteEngine On
RewriteRule \.(jpg)$ - [F]

Попробовал, оставил только

RewriteRule \.(jpg)$ - [F]

Результат тот же - если файл есть на диске его видно.

Выглядит так, что если файл присутствует - апач вообще не лезет htaccess, все правила работают только для ситуаций когда файла физически нет. Но это только на данной конфигурации (Debian5+ISPManager), в остальных случаях всё обрабатывается корректно. Похоже где-то есть какая-то соответствующая настройка.

---------- Добавлено 17.04.2012 в 15:26 ----------

myhand:
Кстати, да. nginx-то в ISP выключен?

В панели nginx-0.6.32-3+lenny3 - жёлтая лампочка справа..

[Удален]
#8
nocomments:

В панели nginx-0.6.32-3+lenny3 - жёлтая лампочка справа..

Значит, скорее всего nginx отдает картинку, а apache этим не занимается.

nocomments
На сайте с 12.11.2009
Offline
189
#9

Аааа ещё новость - в случае с файлами txt всё работает корректно, проблема сакасется только изображений

---------- Добавлено 17.04.2012 в 15:46 ----------

Ещё больше локализовал!

В настройках nginx, есть такие секции (или как там называется):

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
...
}

Перечисленные здесь форматы читаются напрямую с диска, в обход правил в файле htaccess, если запрашиваемый файл физически присутствует на диске. Все остальные обрабатываются корректно.

Сайты везде добавлены через ISP панель, и в настройки nginx ISP же их прописало.

[Удален]
#10

.txt у Вас apache обрабатывает, а jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar обрабатывает nginx, поэтому .htaccess не срабатывает. Пишите правила для nginx.

12 3

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