- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую, товарищи!
Возникла необходимость защититься от хотлинков, но есть ряд сайтов, которым картинку отдавать все-таки надо (а то как-то нехорошо получится).
Решил отдавать им облегченную версию изображения.
Не знаю почему, но оно не работает.
Если пишу полное перенаправление на другую картинку (заглушку)
то все работает правильно, а вот замена только части имени файла не получается. :(
Указать полный путь (как во втором /рабочем/ варианте) возможности нет, потому что изображения НЕ лежат все в одном месте.
Лог апача говорит "File does not exist" и показывает путь до RewriteBase, т.е. какбэ все что я пытаюсь сделать в RewriteRule игнорируется или вроде того.
Подскажите, где косяк.
Там же написано - файл не существует, как не получается?
Положите любой файл в корне под именем blabla-small.jpg, сделайте реврайт чтоб он был доступен без -small и всяких рефов, и смотрите открывается файл или нет.
RewriteRule (.+)(?<!-small)\.jpg $1-small.jpg [L]
Зы
А облегченная картинка точно есть?
Там же написано - файл не существует, как не получается?
Положите любой файл в корне под именем blabla-small.jpg, сделайте реврайт чтоб он был доступен без -small и всяких рефов, и смотрите открывается файл или нет.
RewriteRule (.+)(?<!-small)\.jpg $1-small.jpg [L]
Зы
А облегченная картинка точно есть?
Ну дык я ж вижу, что там написано! :)
Странно не это, а то, по какому пути он его ищет!
Файл уменьшенный есть точно.
Если класть в корень, то все работает, как я уже писал выше.
Проблема в замене.
Может проблема в том, что он "зацикливается"? Начинает и новый файл снова обрабатывать по тем же правилам?
Пока решил вопрос костылями:
из файла уже отдаю маленькую картинку.
Но не нравится мне такое решение. Скрипт этот запускать - тоже нагрузка лишняя. Хотелось бы реврайтом обойтись.
строку
RewriteCond %{REQUEST_FILENAME} .*\.jpg
можно выкинуть (Вы все равно проверяете что это jpg в следующей строке), а вместо нее поставить проверку, что в имени запрошенного файла не содержится "-small".
Дело в том, что Вы преобразуете имя файла, добавляя в него "-small" и не меняя каталога файла.
И после третьей строки (с флагом [L]) у Вас запрашивается файл в том же каталоге и к нему снова применяются все строки из того-же файла .htaccess (если б Вы сменили каталог, файл .htaccess был бы другой), и в него еще раз добавляется "-small".
Поэтому, если преобразуется имя файла, но он остается в том же каталоге, важно не допустить повторного применения к имени файла уже примененного не предыдущем шаге преобразования.
gormarket, siv1987, спасибо. Все работает. Похоже, действительно он обрабатывал новый файл. Но самое забавное, что после пары попыток, меня тупо банил mod_evasive (я и забыл, что его ставил) и я в любом случае не видел картинок - то они есть, то их нет... вот ведь намучился. :)