Данный пост - скорее закладка, чтобы не потерялось, а то эта полезная информация может очень быстро потеряться.
Очень часто бывает так, что в проекте используется много изображений. Иногда - неприлично много. И перекачивание всего массива изображений к себе на хост разработки становится проблемой, когда их много.
Но есть очень простое повседневное решение, которое позволяет не заниматься ерундой, а грузить картинки напрямую с боевого сайта, если их не нашлось на вашем хосте разработки.
Вариант подключения зависит от веб-сервера, который вы используете.
Apache2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png|ico)$
RewriteRule ^(.*)$ http://example.com/$1 [R,NC,L]
Тут происходит простой 302й редирект в случае, если картинка не найдена. Этот код нужно прописать в .htaccess. Однако стоит отметить, что данный код на продакшене должен работать с заглушкой. Самый правильный вариант - использовать переменные окружения. На вашей рабочей площадке должна быть определена переменная окружения, значение которой однозначно позволит понять, что веб-сервер является сервером разработки. На наших серверах разработки установлена переменная APPLICATION_ENV=development. Таким образом, чтобы код не выполнялся на боевом сайте, можно добавить еще одно условие RewriteCond, установив предварительно переменную окружения в апаче в настройках виртуального хоста:
RewriteCond %{ENV:APPLICATION_ENV} ^development$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpe?g|png)$
RewriteRule ^(.*)$ http://example.com/$1 [R,NC,L]
Nginx
location @fallback {
# Версия с редиректом
# return 302 http://example.com/$uri;
# Версия с обратным проксированием
proxy_set_header Host "example.com";
proxy_pass http://example.com;
}
location ~* ^.+.(jpg|jpeg|gif|png|ico)$ {
gzip off;
error_page 404 = @fallback;
}
Тут представлено 2 варианта - один с редиректом, а другой с обратным проксированием. Если картинка не находится веб-сервером, то происходит редирект.
Хочу сказать Спасибо Ивану Цирулеву в подготовке этого небольшого материала.