У меня есть веб-сайт с изображениями с такими URL-адресами:
http://mysite.com/image1.jpg
Мой сервер использует php для перенаправления на поддомен, содержащий фактический файл, например:
header('Location: http://images.mysite.com/image1.jpg');
Это прекрасно работает практически во всех целях, например, в теге img или при локальном сохранении файла. Два URL по существу эквивалентны для этих целей. Однако, когда я захожу на сайт с загрузчиком изображений, например, tumblr или imgur, и пытаюсь загрузить первый URL-адрес, происходит сбой (например, «Ошибка при загрузке фотографии» или «Формат изображения не поддерживается или изображение повреждено»). .
Есть ли способ заставить эту работу? Я пытался отправить разные заголовки статуса, но они не помогли.
EDIT:
Как и предполагалось, я мог бы сделать это с помощью перенаправления htaccess или открыв файл и отправив содержимое. Это будет работать нормально, за исключением того, что я не хочу, чтобы это происходило, когда пользователи используют файлы для других целей, например, для встраивания их в тег img. Это связано с тем, что мой домен images.mysite.com является cdn для размещения содержимого моего изображения, и это может нарушить его назначение, если бы мне пришлось зарезервировать содержимое с моего веб-сервера. И htaccess нежизнеспособен, потому что я хотел запускать некоторые php-скрипты при запросе первого URL.
Если бы я мог как-то определить, когда он используется через загрузчик файлов, то я мог бы обрабатывать другие случаи отдельно. Но я не думаю, что смогу это обнаружить, не так ли?
РЕДАКТИРОВАТЬ 2 (РЕШЕНИЕ):
Хорошо, я сделал хакерский компромисс: оказалось, что запросы на загрузку обычно не имеют параметра "accept_charset" в заголовке, тогда как запросы на встраивание есть. Используя это, я могу определить, когда изображение запрашивается для загрузки, а затем я загружаю это изображение и отправляю содержимое. Не очень надежное решение, но оно работает достаточно хорошо. Спасибо, ребята!