Safari не распознает перезапись htaccess img

#php #.htaccess #server

#php #.htaccess #сервер

Вопрос:

У меня есть несколько строк в моем htaccess для выполнения следующего:

  1. перепишите страницу / скрипт php в формате .png
  2. принудительное обновление кэша на стороне пользователя для всех изображений

Мои строки htaccess:

 
RewriteEngine On
RewriteBase /directory/to/dynamic_image
RewriteRule ^bg.png$ bg.php

AddHandler application/x-httpd-php .jpeg

<Files bg.png>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</Files>

# DISABLE CACHING
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>
 

Я заметил, что в Safari любая перезапись изображения отображается недопустимой. Есть идеи о том, что может происходить? Перезапись изображения отлично работает в Chrome и других браузерах.

Для потомков я также включу php-скрипт, который переписывается в png:

 
$imagesDir = 'img/';

$images = glob($imagesDir . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);

$randomImage = $images[array_rand($images)]; // See comments


$file_out = $randomImage; // The image to return

if (file_exists($file_out)) {

   $image_info = getimagesize($file_out);

   //Set the content-type header as appropriate
   header('Content-Type: ' . $image_info['mime']);

   //Set the content-length header
   header('Content-Length: ' . filesize($file_out));

   //Write the image bytes to the client
   readfile($file_out);
}
else { // Image file not found

    header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");

}?>```


Any help appreciated. Thanks!
 

Ответ №1:

Определил исправление: Заголовок content-length был проблемой в PHP. После удаления скрипт работает по назначению. Спасибо!