0

.htaccessで表示no_image.pngするには (画像が存在しない場合)、次を使用します。

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /images/no_image.png [L]

ただし、これは次の URL 形式の画像を解決しません。

www.domain.com/t.php?src=p/dd5e5b08_1.jpg

上記のサンプル URL で画像が検出されない場合は、.htaccess を通して表示したいと思います。解決策と感謝を提供no_image.pngください

4

2 に答える 2

1

クエリ文字列は URIの一部ではないため、書き換えルールによって検査されないため、画像拡張子ではなく でREQUEST_URI終わります。クエリ文字列を検査するためにt.php使用する必要があります。%{QUERY_STRING}

URL がサーバー上に存在する場合http://www.domain.com/p/dd5e5b08_1.jpg/p/dd5e5b08_1.jpg存在しない場合は/images/no_image.png、現在のルールで代わりに取得します。

とはいえ、PHP を使用して画像をロードしているように見えます。その場合、PHP を使用してファイルが存在するかどうかを判断し、存在しない場合はファイルではなくデフォルトを提供するのが適切.htaccessです。

于 2013-04-26T06:01:33.743 に答える
0

REQUEST_URIQUERY_STRINGURL の一部が含まれていないため、.htaccessルールは適用されません。php スクリプトを介して画像を呼び出しているようです。この画像ファイルが php スクリプトに存在するかどうかを確認し、存在しない場合は no_image.png コンテンツをリダイレクトまたは書き出してください。

t.php の簡単なコード:

<?php

if (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_GET["src"])) {
  header("Location:".$_GET["src"]);
} else {
  header("Location:/images/no_image.png");
}

?>

echoまたは、画像ファイルの内容を使用することもできますheader('Content-Type: image/png')

于 2013-04-26T06:20:26.807 に答える