Я провел свои выходные, программируя небольшую апрельскую шутку, но пока она не работает так, как я хочу.
У меня есть веб-сайт на Drupal 6, который я хочу изменитькак можно меньше.Идея состоит в том, что все изображения, которые обслуживаются из каталога / files, перенаправляются на внешний веб-сервер (myserver), который переворачивает изображение вверх дном и затем передает его в браузер.
Создание веб-сайта Drupal (targetserver)) перенаправив все запросы на изображения на другой сервер, я настроил .htaccess следующим образом:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !^aprilFool$
RewriteRule ^(.*)$ http://myserver/aprilFool/?url=http://targetserver/files/$1 [R=302,L]
И пока он отлично работает!Когда я включаю все, хитрость Апрельского Дурака меняет некоторые изображения, и они отображаются в браузере клиента.
Но когда я отключаю .htaccess @targetserver, мой браузер отказывается понимать, что он предназначен только длявременная шутка и забудь отредактированные изображения: (
Вот фрагмент скрипта Perl на myserver / aprilFool:
my $ua = LWP::UserAgent->new;
# Identify ourselves through the useragent, to prevent endless redirect loops
$ua->agent( 'aprilFool' );
# Load remote file
my $response = $ua->get( $url );
if ( $response->is_error ) { die "Cannot retrieve document $url\n"; }
my $imageData = $response->content;
# Determine the file's mime type, need that to determine if we want to change it or not
my $ft = File::Type->new();
my $format = $ft->mime_type( $imageData );
# If the file is an image, flip it
if ( $format =~ m/^image\// ) {
my $image=Image::Magick->new;
$image->BlobToImage( $imageData );
$image->Flip();
$imageData = $image->ImageToBlob();
}
# Send HTTP headers
print "Content-type:$format\r\n";
print "\r\n";
print $imageData;
Я безуспешно пробовал следующее:
- Добавить дополнительный заголовок в скрипт: print "Cache-Control: max-age = 36 \ r \ n";
- Добавить строку в .htaccess @targetserver: заголовок установлен Expires "Пн Мар 12 15:45:00 CET 2012 "
- Изменить имя для image.jpg различными способами tmp-image.jpg, image.jpg.tmp, изменив RewriteRule в .htaccess @ myserver
Но после отключения .htaccess целевой сервер продолжает отправлять 304 => «Не изменено» до тех пор, пока я не вручную очищу кеш браузера.
Итак, мой вопрос: как я могу сделать 1 апреля последним толькоодин день, желательно до мидниGHT ... Как я могу заставить браузер понять, что он должен перезагрузить исходное изображение, когда шутка закончилась?