我有一个使用handlebars.js来渲染页面的模板。在每个循环内部,我引用存储在S3上的一些图像。有些图片还不存在,所以我有一个'no-photo'占位符代替我。因此,当我检查标题以确定是否显示占位符时,我每次都会得到404,即使某些图像存在并显示。
{#each listings}}
<div class="wpbl handlebars">
<div class="IDX-row-content">
<!-- content row -->
<div class="IDX-resultsCol IDX-columnOne">
<div class="IDX-resultsPhoto">
<?php
$image_src = 'https://s3-us-west-2.amazonaws.com/myS3bucket/{{ln}}_0.jpg';
$headers = get_headers($image_src);
if($headers[0] == 'HTTP/1.1 404 Not Found')
{
// The image doesn't exist in the DOM
$image_src = get_stylesheet_directory_uri() . '/images/no-photo.png';
}
?>
<img src="<?php echo $image_src; ?>" class="IDX-resultsPhotoImg">
</div>
</div>
<div style="display:none;">
<?php echo var_dump($headers); ?>
</div>
// blah blah remaining code
代码全部有效,因为现有的图像会按照每个列表的预期进行渲染。但我很困惑,为什么我从每张图片中得到404 Not Found回复。当我回应var_dump时:
array(7) {
[0]=>string(22) "HTTP/1.1 404 Not Found"
[1]=>string(34) "x-amz-request-id: ADFAC90C00E2830A"
[2]=>string(88) "x-amz-id-2:PMbIxENYEpzSPENjvaM9nkR7PaxSQoyGreaomHZqA15CXyZ0Rz/qwIfK/jxJgB9GUwqpi4DtkgY="
[3]=>string(29) "Content-Type: application/xml"
[4]=>string(35) "Date: Tue, 01 Mar 2016 18:43:32 GMT"
[5]=>string(17) "Connection: close"
[6]=>string(16) "Server: AmazonS3"
}
当我检查html时,图像就在那里:
我缺少什么想法?