Проблема с правилом htaccess, не срабатывает

12
vandamme
На сайте с 30.11.2008
Offline
646
843

Ребят, не могу понять почему не срабатывает правило, пишу следующее:

RewriteCond %{HTTP_REFERER} ^http(s)?://([^.]+\.)?google [NC]

RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /watermark.php?p=c&src=$1 [L]

то есть если пользователь сейчас находится на google image search, то ему должны выводиться картинки с водяным знаком через мой скрипт.

хотя вот так работает, но тогда на всех сайтах будет отображаться водяной знак и это не подходит, так как будет создавать зверскую нагрузку, ведь картинки прям с моего хоста грузятся на сотнях доров.

RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?mysite\.ru/ [NC]

RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /watermark.php?p=c&src=$1 [L]

Что я делаю неправильно? уже и так пробовал, но не получается.

RewriteCond %{HTTP_REFERER} ^http(s)?://([^.]+\.)?google.[a-z]{2,4}(.[a-z]{2,4})?/ [NC]

такое ощущение что правила сраатывают только на знак восклицания ! то есть если не мой хост, тогда подставляем картинку :(

Милованов Ю.С
На сайте с 24.01.2008
Offline
197
#1


RewriteCond %{HTTP_REFERER} ^https?://[www\.]?google [NC]
RewriteRule ^(uploads/.*\.[bmp|gif|jpe?g|png])$ /watermark.php?p=c&src=$1 [L]

Вместо $1 что должно подставляться? Полный путь от корня сайта? Вообщем с этим надо поэксперементировать(чит. посомтреть че надо скрипту)

Код не проверял;)

Подпись))
vandamme
На сайте с 30.11.2008
Offline
646
#2

Милованов Ю.С, там без разницы, - относительный или абсолютный путь к картинке.

uploads - тут в куче дочерних папок лежат картинки, к которым надо это применить, не хотелось бы чтобы это применялось к другим корневым папкам с темой/шаблонов сайта.

---------- Добавлено 09.05.2013 в 17:47 ----------

Милованов Ю.С:
Код не проверял

не пашет :(

Милованов Ю.С
На сайте с 24.01.2008
Offline
197
#3

1) попробывать просто реврайт без условия:


RewriteRule ^(uploads/.*\.[bmp|gif|jpe?g|png])$ /watermark.php?p=c&src=$1 [L]

2) Если работает, то так:


RewriteCond %{HTTP_REFERER} google [NC]
RewriteRule ^(uploads/.*\.[bmp|gif|jpe?g|png])$ /watermark.php?p=c&src=$1 [L]

3) Если не работает, то попробовать КОНД заменить на этот


RewriteCond %{HTTP_REFERER} ^.*google.*$ [NC]

4) Если не работает, то проверить - действительно ли приходит ХТТП_РЕФЕРЕРи он содержит в себе "google"

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

Правый клик -> свойство изображения - куда указывает адрес?

vandamme
На сайте с 30.11.2008
Offline
646
#5
siv1987:
куда указывает адрес?

при каком раскладе правил?

конечно же указывает оригинальный путь к фото

Милованов Ю.С, ничего не сработало из вышеприведенного.

я вот подумал, может там как то во ajax-фрейме картинки и поэтому реферер не передается?

Милованов Ю.С
На сайте с 24.01.2008
Offline
197
#6

Вообще, отправка заголовка РЕФЕР это задача браузера. И если он захочет отправлять - отправит.

Один раз столкнулся с ситуацией, когда опера ничего не слала, а мозила слала слэш вроде.

А если так:


RewriteCond %{HTTP_REFERER} google [NC]
RewriteRule ^(wp-content/uploads/.*\.[bmp|gif|jpe?g|png])$ /watermark.php?p=c&src=$1 [L]

Штакес должен быть в корне сайта.

vandamme
На сайте с 30.11.2008
Offline
646
#7

Милованов Ю.С, фиг его знает, не работает хоть ты тресни

работает только так, буду пинать хостера

RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?mysite\.ru/ [NC]
RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /watermark.php?p=c&src=$1 [L]
siv1987
На сайте с 02.04.2009
Offline
427
#8

vandamme, в начале watermark.php впишите

file_put_contents('log.txt', "{$_SERVER['REMOTE_ADDR']}:{$_SERVER['HTTP_REFERER']}\r\n", FILE_APPEND);

Удалите RewriteCond %{HTTP_REFERER}, оставьте только RewriteRule, запросите картинки из гугла и смотрите логи.

vandamme
На сайте с 30.11.2008
Offline
646
#9

siv1987, прописал, при таком правиле

RewriteCond %{HTTP_REFERER} google [NC]
RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /timthumb.php?wm=1&src=$1 [L]

в логе, меня вообще нет в этих ip

46.227.191.181:httр://www.google.kz/blank.html
82.199.223.92:httр://www.google.am/blank.html
92.112.114.14:httр://www.google.com.ua/search?client=safari&hl=ru&biw=320&bih=416&tbm=isch&sa=1&ei=ncWLUZ-tBcbBPPzxgdgG&q=%D0%BA...................
217.76.69.116:httр://www.google.kz/blank.html

а если вернуть к моему прежнему

RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?mysite\.ru/ [NC]
RewriteCond %{HTTP_USER_AGENT} !(googlebot-image|msnbot|psbot|slurp|yahoo-mmcrawler|bingbot|yandex) [NC]
RewriteRule (^uploads.*\.(bmp|gif|jpe?g|png)$) /timthumb.php?wm=1&src=$1 [L]

то мои ip есть, но там пусто после них

xx.xxx.112.255:
xx.xxx.112.255:
92.242.103.170:htth://www.google.com.ua/blank.html
5.153.181.35:htth://images.yandex.ua/yandsearch?text=%D0%BB%D0....
46.201.255.173:
5.153.181.35:htth://images.yandex.ua/yandsearch?text=%D0%BB%D0.......
siv1987
На сайте с 02.04.2009
Offline
427
#10

Возможно в браузере отключено передача реферера.

vandamme:
а если вернуть к моему прежнему

Это возвращать не надо. Либо совсем уберите RewriteCond, либо оставьте гугла

12

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