Как я могу перенаправить ошибку изображения 404 на Amazon S3 на свой сервер - PullRequest
3 голосов
/ 03 января 2012

Можно ли перенаправить ошибку 404 на сервере Amazon S3 на мой собственный сервер? Вот случай на моем сайте:

Пользователь загрузил файл с именем abc.jpg. У меня есть набор типов изображений, таких как кадрирование или большой палец.

Когда кто-то обращается к /img/abc.crop.jpg, веб-сервер проверяет и ищет файл /img/abc.crop.jpg. Если они его нашли, веб-сервер выбросит файл.

Но когда программа не может найти этот файл, этот файл .htaccess направит его в программу:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Таким образом, он перейдет в index.php / img / abc.crop.jpg, где контроллер / программа «img» будет искать файл abc.jpg и генерировать файл с именем abc.crop.jpg в папке img. Поэтому в следующий раз, когда другой пользователь получит доступ к abc.crop.jpg, программе больше не нужно будет восстанавливать файл.

Теперь, когда я использую Amazon S3, мне нужно генерировать ВСЕ разные размеры (кадрирование, большой палец и т. Д.) Один за другим, чтобы избежать ошибки 404. Цель вышеупомянутой техники - сохранить пространство. Я хотел, чтобы поток соответствовал текущему состоянию. Кто-нибудь есть идеи о том, как манипулировать ошибкой S3 404, чтобы они перенаправили на мой сервер? То есть. http://bucket.s3.amazonaws.com/img/abc.crop.jpg перенаправить на http://mysite.com/img/abc.crop.jpg?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2013

Это мой обходной путь для определения ошибки 404.

  1. Включение веб-службы S3
  2. Сконфигурируйте документ с ошибкой в ​​file-not-found.jpg
  3. $result = $s3->getObject(array( 'Bucket' => 'my bucket', 'Key' => 'path/to/file' ));
  4. Используйте md5 или crc32, чтобы определить, является ли возвращаемый объект file-not-found.jpg
  5. Перенаправить на ваш собственный сервер

0 голосов
/ 03 января 2012

Если вы используете codeigniter, посмотрите на зарезервированные маршруты http://codeigniter.com/user_guide/general/routing.html., вы можете указать конкретный контроллер для любой ошибки 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...