Пункт 149. Модуль Apache mod_imagemap
Этот модуль обрабатывает .map
файлы, заменяя тем самым функционал программы imagemap
CGI. Любой каталог или тип документа, сконфигурированный для использования обработчика imap-file
(с помощью
AddHandler
или
SetHandler
), будет обработан этим модулем.
Следующая директива активирует файлы, оканчивающиеся на
.map
как файлы изображений:
Карта imap-файла AddHandler
Обратите внимание, что по-прежнему поддерживается следующее:
Приложение AddType/карта x-httpd-imap
Однако мы пытаемся отказаться от «магических типов MIME», поэтому мы отказываемся от этого метода.
Новые возможности
Модуль imagemap добавляет некоторые новые функции, которые были недоступны в ранее распространяемых программах imagemap.
- URL-ссылки относительно Referer: информация.
- Назначение по умолчанию
<base>
через новую директиву карты base
.
- Нет необходимости в
imagemap.conf
файле.
- Ссылки на точки.
- Настраиваемое создание меню карты изображений.
Файл карты изображения
Строки в файлах изображений могут иметь один из нескольких форматов:
directive value [x,y ...]
directive value "Menu text" [x,y
...]
directive value x,y ... "Menu text"
Директива является одной из base
,
default
, poly
, circle
,
rect
или point
. Значение представляет собой абсолютный или относительный URL-адрес или одно из специальных значений, перечисленных ниже. Координаты представляют собой
пары, разделенные пробелом. Текст в кавычках используется как текст ссылки, если создается меню карты изображения. Строки, начинающиеся с «#», являются комментариями. x,y
Директивы файла Imagemap
В файле imagemap разрешено шесть директив. Директивы могут идти в любом порядке, но обрабатываются в том порядке, в котором они находятся в файле карты изображений.
-
base
Директива
Имеет эффект . Неабсолютные URL-адреса файла карты берутся относительно этого значения. Директива переопределяет
установку в
файле или в файлах конфигурации сервера. При отсутствии директивы конфигурации по умолчанию используется
. <base href="value">
base
ImapBase
.htaccess
ImapBase
base
http://server_name/
base_uri
является синонимом base
. Обратите внимание, что косая черта в конце URL имеет большое значение.
-
default
Директива
- Действие, выполняемое, если заданные координаты не соответствуют ни одной из директив
poly
, circle
или
, а директив rect
нет
. point
По умолчанию используется nocontent
при отсутствии параметра конфигурации, что приводит к возврату ImapDefault
кода состояния . 204 No Content
Клиент должен сохранять ту же страницу отображаемой.
-
poly
Директива
- Принимает от трех до ста точек и выполняется, если выбранные пользователем координаты попадают в полигон, определяемый этими точками.
-
circle
- Принимает координаты центра окружности и точки на окружности. Соблюдается, если выбранная пользователем точка находится на окружности.
-
rect
Директива
- Получает координаты двух противоположных углов прямоугольника. Выполняется, если выбранная точка находится внутри этого прямоугольника.
-
point
Директива
- Берет одно очко. Директива точки, ближайшая к точке, выбранной пользователем, выполняется, если никакие другие директивы не выполняются. Обратите внимание, что это
default
не будет выполняться, если point
присутствует директива и указаны действительные координаты.
Ценности
Значения для каждой из директив могут быть любыми из следующих:
- URL-адрес
URL-адрес может быть относительным или абсолютным URL-адресом. Относительные URL-адреса могут содержать синтаксис '..' и будут разрешаться относительно значения
base
.
base
сам не будет разрешен в соответствии с текущим значением. Однако оператор base mailto:
будет работать правильно.
-
map
- Эквивалентно URL-адресу самого файла карты изображений. При этом координаты не отправляются, поэтому будет создано меню, если не
ImapMenu
установлено значение
none
.
-
menu
- Синоним с
map
.
-
referer
- Эквивалентно URL ссылающегося документа. По умолчанию используется,
http://servername/
если Referer:
заголовок отсутствует.
-
nocontent
- Отправляет код состояния
204 No Content
, сообщая клиенту, что нужно продолжать отображать ту же страницу. Действительно для всех, кроме base
.
-
error
- Не удается с
500 Server Error
. Действительно для всех, кроме base
, но глупо для всего, кроме
default
.
Координаты
-
0,0 200,200
- Координата состоит из значений x и y
, разделенных запятой. Координаты отделены друг от друга пробелом. Чтобы приспособиться к тому, как Lynx обрабатывает карты изображений, если пользователь выбирает координату
0,0
, это будет так, как если бы координата не была выбрана.
Цитируемый текст
-
"Menu Text"
После значения или после координат строка может содержать текст в двойных кавычках. Эта строка используется как текст для ссылки, если сгенерировано меню:
<a href="http://example.com/">Menu text</a>
Если текст в кавычках отсутствует, в качестве текста будет использоваться название ссылки:
<a href="http://example.com/">http://example.com</a>
Если вы хотите использовать двойные кавычки в этом тексте, вы должны написать их как "
.
Пример файла карты
#Comments are printed in a 'formatted' or 'semiformatted' menu.
#And can contain html tags. <hr>
base referer
poly map "Could I have a menu, please?" 0,0 0,10 10,10 10,0
rect .. 0,0 77,27 "the directory of the referer"
circle http://www.inetnebr.example.com/lincoln/feedback/ 195,0 305,27
rect another_file "in same directory as referer" 306,0 419,27
point http://www.zyzzyva.example.com/ 100,100
point http://www.tripod.example.com/ 200,200
rect mailto:nate@tripod.example.com 100,150 200,0 "Bugs?"
Ссылка на ваш файл карты
HTML-пример
<a href="/maps/imagemap1.map">
<img ismap src="/images/imagemap1.gif">
</a>
XHTML-пример
<a href="/maps/imagemap1.map">
<img ismap="ismap" src="/images/imagemap1.gif" />
</a>
Директива ImapBase
Описание: | По умолчанию base для файлов изображений |
Синтаксис: | ImapBase map|referer|URL |
По умолчанию: | ImapBase http://servername/ |
Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
Переопределить: | Индексы |
Положение дел: | База |
Модуль: | mod_imagemap |
Директива ImapBase
устанавливает значение по умолчанию
base
, используемое в файлах изображений. Его значение переопределяется директивой base
в файле карты изображений. Если нет, по base
умолчанию используется
. http://servername/
Смотрите также
Директива ImapDefault
Описание: | Действие по умолчанию, когда карта изображения вызывается с координатами, которые не отображаются явно |
Синтаксис: | ImapDefault error|nocontent|map|referer|URL |
По умолчанию: | ImapDefault nocontent |
Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
Переопределить: | Индексы |
Положение дел: | База |
Модуль: | mod_imagemap |
Директива ImapDefault
устанавливает значение по умолчанию
default
, используемое в файлах изображений. Его значение переопределяется директивой default
в файле карты изображений. Если нет, default
действие равно nocontent
, что означает, что 204 No
Content
клиенту отправляется a. В этом случае клиент должен продолжать отображать исходную страницу.
Директива ImapMenu
Описание: | Действие, если при вызове карты изображения не заданы координаты |
Синтаксис: | ImapMenu none|formatted|semiformatted|unformatted |
По умолчанию: | ImapMenu formatted |
Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
Переопределить: | Индексы |
Положение дел: | База |
Модуль: | mod_imagemap |
Директива ImapMenu
определяет действие, предпринимаемое, если файл карты изображений вызывается без допустимых координат.
-
none
- Если ImapMenu имеет значение
none
, меню не создается и default
выполняется действие.
-
formatted
- Меню
formatted
— это самое простое меню. Комментарии в файле imagemap игнорируются. Печатается заголовок первого уровня, затем hrule, затем ссылки, каждая на отдельной строке. Меню имеет последовательный, простой вид, близкий к списку каталогов.
-
semiformatted
- В
semiformatted
меню комментарии печатаются там, где они встречаются в файле карты изображения. Пустые строки превращаются в разрывы HTML. Заголовок или hrule не печатаются, но в остальном меню такое же, как и
formatted
меню.
-
unformatted
- Комментарии печатаются, пустые строки игнорируются. Ничего не печатается, чего нет в файле imagemap. Все разрывы и заголовки должны быть включены в качестве комментариев в файл карты изображений. Это дает вам наибольшую гибкость в отношении внешнего вида ваших меню, но требует, чтобы вы обрабатывали файлы карты как HTML, а не как обычный текст.