- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую, товарищи!
Возникла необходимость защититься от хотлинков, но есть ряд сайтов, которым картинку отдавать все-таки надо (а то как-то нехорошо получится).
Решил отдавать им облегченную версию изображения.
Не знаю почему, но оно не работает.
Если пишу полное перенаправление на другую картинку (заглушку)
то все работает правильно, а вот замена только части имени файла не получается. :(
Указать полный путь (как во втором /рабочем/ варианте) возможности нет, потому что изображения НЕ лежат все в одном месте.
Лог апача говорит "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 (я и забыл, что его ставил) и я в любом случае не видел картинок - то они есть, то их нет... вот ведь намучился. :)