テストサイトや(本番サイトでも)画像がリンク切れになっているときに、自動で代替えの画像を表示させたい時があると思います。その時の.htaccessファイルを自分のコピペ用にメモ。
手順
- 404.png として画像がリンク切れになった時に表示する画像を作成する。
- ドメイン直下のフォルダに上記 404.png 画像をアップロード
- 下記のコードをドメイン直下のフォルダ内にある .htaccess ファイルの先頭に追加(無ければ作成)
コード
まあ転送するだけなんですけど
# 画像ファイルが存在しない場合の代替画像リダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On
# 画像ファイル(jpg, jpeg, png, gif, webp, svg)のリクエストで、ファイルが存在しない場合
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(jpe?g|png|gif|webp|svg)$ [NC]
RewriteRule ^(.*)$ /404.png [L,R=302]
</IfModule>解説
この .htaccess ファイルは要するに「画像ファイルが存在しない場合に「404.png」へ転送(リダイレクト)する」って設定を書いてます。
- 画像ファイルの存在チェック
RewriteEngine On → mod_rewrite(URL書き換えエンジン)を有効化 - 画像ファイルが存在しない場合のリダイレクト
RewriteCond %{REQUEST_FILENAME} !-f → リクエストされたファイルが存在しない場合に次のルールを適用 - RewriteRule .(jpg|jpeg|png|gif)$ /404.png [L]
→ jpg, jpeg, png, gif いずれかの拡張子で終わるリクエストが対象
→ ファイルが存在しなければ「/404.png」に転送
[L] はこのルールで処理を終了する指示
これで画像ファイルが見つからない場合に、ユーザーには「404.png」が表示されるから、デフォルトの404エラーの代わりに専用画像を見せれる。画像のリンク切れ対策や、デザインを損なわない404対応として役立つっていう寸法~。
