Помогите побороть radiorecord.ru

12
S
На сайте с 11.06.2010
Offline
57
2699

Проблема заключается в их он-лайн плеере (http://www.radiorecord.ru/player/player_16_6.swf). При проигрывании песни он личит картинку с моего сайта. Соответственно, 10000 обращений к ней за 3 минуты с разных ип ложили VPS в полный даун, вплоть до полного отключения.

Поборол это добавив в htaccess

RewriteCond %{HTTP_REFERER} ^http://(www\.)?radiorecord\.ru NC

RewriteRule ^(.*)$ - F,L

Но почему-то уходит в бесконечный цикл. В логе пишет:

[error] [client 85.26.165.214] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://www.radiorecord.ru/player/player_16_6.swf

Есть ещё 301 редирект:

RewriteCond %{HTTP_HOST} ^www.site\.ru$ NC

RewriteRule ^(.*)$ http://site.ru/$1 R=301,L

Как подружить правила/избавиться от ошибки, а то лог ошибок больше чем лог доступа :(

Rimlyanin
На сайте с 22.02.2006
Offline
200
#1
sergjo:
Проблема заключается в их он-лайн плеере (http://www.radiorecord.ru/player/player_16_6.swf). При проигрывании песни он личит картинку с моего сайта. Соответственно, 10000 обращений к ней за 3 минуты с разных ип ложили VPS в полный даун, вплоть до полного отключения.

Поборол это добавив в htaccess
RewriteCond %{HTTP_REFERER} ^http://(www\.)?radiorecord\.ru NC

RewriteRule ^(.*)$ - F,L


Но почему-то уходит в бесконечный цикл. В логе пишет:


Есть ещё 301 редирект:
RewriteCond %{HTTP_HOST} ^www.site\.ru$ NC

RewriteRule ^(.*)$ http://site.ru/$1 R=301,L


Как подружить правила/избавиться от ошибки, а то лог ошибок больше чем лог доступа :(

А если по этому рефферу отдавать 404 или 403 ?

S
На сайте с 11.06.2010
Offline
57
#2

Спасибо. 403 и отдаю (F).

Впрочем уже нашёл где зацикливает. Прописал ещё одно правило. Буду ждать и смотреть сработает или нет, когда/если этот трек опять в ротацию запустят...

T
На сайте с 09.12.2011
Offline
55
tls
#3

Если вам нужен анти-хотлинк для картинок, то решение должно быть универсальным, а у вас защита только от одного сайта. Верный алгоритм: если реферер - не мой сайт и не пустой, то - 404. Если не можете сделать сами, то есть конструкторы: http://www.htaccesstools.com/hotlink-protection/

S
На сайте с 11.06.2010
Offline
57
#4
tls:
Если вам нужен анти-хотлинк для картинок, то решение должно быть универсальным, а у вас защита только от одного сайта.

Спасибо за ссылку.

Я как бы не против, если вменяемые сайты встроят себе картинку. Плюс к ссылочному :) (например, получил в панели ссылку с news.ru, посмотрел картинка в их статье ...).

Всё что приводил выше работает, за исключением ошибки

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary...

Вечером включил режим лога -дебаг. Пишет, что зацикливается при вызове error.php, добавил ещё

RewriteCond %{REQUEST_URI} ^/error.* NC

RewriteRule .* - L

Утреннее проигрывание трека показало, что опять та же ошибка в логе... (debug отключал). Вообщем, пока проблема не решена.

DV
На сайте с 01.05.2010
Offline
644
#5

sergjo, а писать им не пробовали?

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
T
На сайте с 09.12.2011
Offline
55
tls
#6
sergjo:

Утреннее проигрывание трека показало, что опять та же ошибка в логе... (debug отключал). Вообщем, пока проблема не решена.

Покажите полный .htaccess .

S
На сайте с 11.06.2010
Offline
57
#7

DenisVS . Пробовал, в ответ ноль.

tls

Вообщем у меня получилось три решения:

1

RewriteCond %{HTTP_REFERER} ^http://(www\.)?radiorecord\.ru NC
RewriteRule ^(.*)$ - F,L

В итоге - сайт не ложится, но пишет ошибку о зацикливании. Ответ сервера 403 - размер 333 байта.

2

Добавить


RewriteCond %{REQUEST_URI} ^/error.* NC
RewriteRule .* - L

В итоге отдаёт страницу 403 уже с моего сайта (а это уже + sql) - 17 кб - зато ошибок в логе нет, но сервер падает. Неприемлимо.

Ну и 3

RewriteCond %{HTTP_REFERER} ^http://(www\.)?radiorecord\.ru [NC]
RewriteRule ^(.*)$ http://i.imgur.com/qX4w7.gif [L]

В итоге 302 редирект на демо-картинку - 150 байт. На этом варианте остановился. Пережил две ротации песни...

T
На сайте с 09.12.2011
Offline
55
tls
#8

Я то просил полный .htaccess, со всеми вашими самодельными страницами ошибок и т.п. А так да, решение верное. Только учтите, что сейчас редирект будет при запросе любых страниц, а не только картинок, ну и этот редирект должен быть выше, чем www - no-www.

S
На сайте с 11.06.2010
Offline
57
#9

tls

Спасибо. Замечания принял к сведению. Не сделал фильтр для картинок, а оставил (.*) осознанно, какой регепс быстрее работает...

AddDefaultCharset UTF-8

RewriteEngine On
Options +FollowSymLinks
RewriteBase /

RewriteCond %{HTTP_REFERER} ^_http://(www\.)?radiorecord\.ru [NC]
RewriteRule ^(.*)$ http://i.imgur.com/qX4w7.gif [L]

RewriteCond %{HTTP_HOST} ^www.сайт\.ru$ [NC]
RewriteRule ^(.*)$ http://сайт.ru/$1 [R=301,L]

DirectoryIndex index.php index.html

#compress the files
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
</ifmodule>

#кеширование
FileETag none
ExpiresActive on
ExpiresByType image/png A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/ico A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType text/css A2592000
ExpiresByType text/html "now"

ErrorDocument 400 /error.php?400
ErrorDocument 401 /error.php?401
ErrorDocument 403 /error.php?403
ErrorDocument 404 /error.php?404
ErrorDocument 500 /error.php?500
gormarket
На сайте с 29.12.2010
Offline
47
#10

Вот теперь видно, что нет ничего удивительного в зацикливании при использовании флага F

Вы для referer radiorecord.ru отдаете код 403, срабатывает директива "ErrorDocument 403", вызывается "/error.php?403", снова проход по .htaccess и, учитывая что referer не изменился, снова отдается код 403, снова срабатывает "ErrorDocument 403" и т.д.

Для Вас принципиально важно отдавать собственную редакцию страницы 403 ошибки?

Если Вы хотите отдавать код 403 без особой нагрузки может вам просто строку

ErrorDocument 403 /error.php?403

убрать?

Тогда после строки

RewriteBase /

вставляете код из первого топика и все будет ОК.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
12

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