我花了周末时间编写了一个愚人节玩笑,但它还不完全按照我的意愿工作。
我有一个基于Drupal 6的网站,希望尽可能少地更改它。我的想法是将从 /files 目录提供的所有图像重定向到外部 Web 服务器(myserver),该服务器将图像翻转并将其提供给浏览器。
为了使 Drupal 网站(targetserver)将所有图像请求重定向到另一台服务器,我设置了一个 .htaccess 如下:
我尝试了以下方法但都没有成功:
所以我的问题是:我如何使愚人节只持续一天,最好持续到午夜... 我如何让浏览器意识到一旦玩笑结束就必须重新加载原始图像?
我有一个基于Drupal 6的网站,希望尽可能少地更改它。我的想法是将从 /files 目录提供的所有图像重定向到外部 Web 服务器(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时,我的浏览器拒绝意识到这只是一个临时的玩笑,并忘记了编辑后的图片 :(
这里是我服务器上/aprilFool的Perl脚本片段:
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 添加一行:Header set Expires "Mon Mar 12 15:45:00 CET 2012"
- 通过更改 .htaccess @myserver 中的 RewriteRule 将 image.jpg 的名称更改为 tmp-image.jpg,image.jpg.tmp 等多种方式。
所以我的问题是:我如何使愚人节只持续一天,最好持续到午夜... 我如何让浏览器意识到一旦玩笑结束就必须重新加载原始图像?
Mon Mar 12 2012 15:45:00 CET
吗?请参考 http://blog.ellisons.org.uk/article-58 了解有关默认值的讨论。它们可能不是你所期望的 :-) - TerryE