Данный пост — скорее закладка, чтобы не потерялось, а то эта полезная информация может очень быстро потеряться.
Очень часто бывает так, что в проекте используется много изображений. Иногда — неприлично много. И перекачивание всего массива изображений к себе на хост разработки становится проблемой, когда их много.
Но есть очень простое повседневное решение, которое позволяет не заниматься ерундой, а грузить картинки напрямую с боевого сайта, если их не нашлось на вашем хосте разработки.
Вариант подключения зависит от веб-сервера, который вы используете.
Apache2
1 2 3 |
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, установив предварительно переменную окружения в апаче в настройках виртуального хоста:
1 2 3 4 |
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
1 2 3 4 5 6 7 8 9 10 11 12 |
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 варианта — один с редиректом, а другой с обратным проксированием. Если картинка не находится веб-сервером, то происходит редирект.
Хочу сказать Спасибо Ивану Цирулеву в подготовке этого небольшого материала.