#php #.htaccess #server
#php #.htaccess #сервер
Вопрос:
У меня есть несколько строк в моем htaccess для выполнения следующего:
- перепишите страницу / скрипт php в формате .png
- принудительное обновление кэша на стороне пользователя для всех изображений
Мои строки 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. После удаления скрипт работает по назначению. Спасибо!