.htaccess - mod_imagemap

mod_imagemap

以下は、mod_imagemap モジュールのディレクティブの一覧です。mod_imagemap は、サーバサイドで画像を処理するモジュールです。このモジュールを使うことで、画像の任意の部分にリンクを設定できます。ただし、Apache 1.3.39 以前、2.0.61 以前、2.2.6 以前のモジュールにはクロスサイトスクリプティングの脆弱性が存在します。 ベンダが提供する最新版にアップデートすることで、脆弱性の問題を修正できます。

mod_imagemap は、イメージマップ (またはクリッカブル・マップ) ファイルを扱います。イメージマップファイルには、"サーバサイド・イメージマップ" と "クライアントサイド・イメージマップ" の 2 種類があります。mod_imagemap は、サーバサイド・イメージマップを使用します。イメージマップを使用するには、imap-file ハンドラにマップファイル (.map) を対応付ける必要があるため、AddHandler ディレクティブで対応付けます。

# imap-file ハンドラにマップファイルを対応付ける。
AddHandler imap-file .map
イメージマップのフォーマット

マップファイルの対応付けが完了したら、次はマップファイルを作成します。マップファイルには、directive(命令)、value(値)、[x,y ...](座標)、説明文 の 4 つの要素があります。4 つの要素の書き方には順序があり、以下の 3 通りの指定ができます。

# イメージマップのフォーマット
directive value [x,y ...]
directive value "Menu text" [x,y ...]
directive value x,y ... "Menu text"
イメージマップのフォーマット

" に囲まれた文字列は、イメージマップファイル表示時の説明文になります。x,y の座標は画像の x 座標と y座標になります。ただし、下表の basedefault は説明文と座標を指定できないため、記述を省略します。directivevalue の値は下表に示します。

directive 一覧
説明
baseマップファイル内での相対 URL を指定します。
defaultマップファイル内にデフォルトのリンク先の領域を定義します。
point がある場合、pointで指定した領域がデフォルトの領域になります。
point がない場合、polycirclerect 以外の領域がデフォルトになります。
poly多角形を指定します。座標は、3 ~ 100 点の範囲で指定できます。
circle円を指定します。座標は、中心点と円周上の 1 点を指定できます。
rect四角形を指定します。座標は、対角となる 2 点を指定します。
point点を指定します。点の範囲は、クリックした点から最も近い点が有効になります。
point を指定した場合、default は無効になります。
value 一覧
説明
URLリンク先の URL を指定します。
base や ImapBase ディレクティブが定義されている場合、そこからの相対パスとなります。
mapマップファイルメニューを表示します。
ただし、ImapMenu ディレクティブで none を指定した場合は、表示されません。
menumap と同様です。
refererHTTP ステータスコード 302 を返します。
nocontentHTTP ステータスコード 204 を返します。
base を除くすべての命令に有効です。
errorHTTP ステータスコード 500 を返します。
base を除くすべての命令に有効ですが、default 以外は不適当です。

上記の説明を元に、サーバサイド・イメージマップを行う例としては、以下のようになります。

# .htaccess
AddHandler imap-file .map

# imagemap.map
default /
rect https://murashun.jp/ "四角形" 20,20 80,80

# sample.html
<a href="/maps/imagemap.map">
  <img ismap src="/img/imagemap.gif">
</a>
サーバサイド・イメージマップの例

ImapBase ディレクティブ

ImapBase ディレクティブは、マップファイルで使われるデフォルトの URL を設定できます。指定しない場合は、デフォルト値として、http://servername/ になります。以下は、本ディレクティブの構文になります。

# ImapBase ディレクティブの構文
ImapBase map|referer|URL
ImapBase ディレクティブの構文

ImapDefault ディレクティブ

ImapDefault ディレクティブは、マップファイルの中で使われる default のデフォルト値を URLmapreferernocontenterror から指定できます。指定しない場合は、nocontent となります。

# ImapDefault ディレクティブの構文
ImapDefault error|nocontent|map|referer|URL
ImapDefault ディレクティブの構文

ImapMenu ディレクティブ

ImapMenu ディレクティブは、イメージマップのメニュー表示を設定できます。

# ImapMenu ディレクティブの構文
ImapMenu none|formatted|semiformatted|unformatted
ImapMenu ディレクティブの構文
value 一覧
説明
noneイメージマップのメニューを表示しません。
ただし、マップファイルの default で定義した動作を行います。
formattedヘッダ、およびリンク一覧を表示します。
ただし、マップファイルで定義した説明文は表示されません。
semiformattedリンク一覧、およびマップファイルで定義した説明文を表示します。
unformattedマップファイルの中に HTML を記述することで、オリジナルのメニューを設定できます。

関連記事