Basecgi
Базовый адрес и CGI
Особое место в схеме HTTP универсального локатора ресурсов(URL) занимает адресация CGI-скриптов. Дело в том, что путь к ресурсу(см. "Базовый адрес HTML-документа") интерпретируется не только браузером, но и сервером и при этом состоит из нескольких компонентов. Например,:
http://www.kiae.ru/~paul/base.cgi/kuku/ru?kuku+ru
В этом примере скрипт base.cgi находится в домашнем каталоге пользователя paul. При этом за именем скрипта до знака "?" указан еще ряд символов. В этом случае базовым URL для ссылок документа, сгенерированного скриптом, будет не адрес каталога, в котором расположен скрипт, а вся строка до символа "?". Например, ссылка вида:
<a href=base.cgi>Ссылка на скрипт</a>
будет ссылаться на скрипт с URL -
http://www.kiae.ru/~paul/base.cgi/kuku/ru/base.cgi
Дело в том, что браузер распознает путь как последовательность символов от доменного имени или порта до конца строки или символа "?", в то время как сервер работает со скриптами несколько иначе. Все множество символов от имени скрипта до символа "?" помещается сервером в переменную окружения PATH_INFO, которую можно использовать в качестве дополнительного условия при генерации отклика или перенаправлении запроса.
Этот прием достаточно часто используется на Web-узлах, которые размещают у себя чужую рекламу. Типичным примером такого сорта можно считать сервер infoart(www.infoart.ru). Рекламные банеры этого Web-узла вызывают скрипты, которым через PATH_INFO передают URL рекламодателя для перенаправления запроса.
Другой пример - www.reklama.ru. Типичная ссылка на рекламный банер здесь может выглядеть следующим образом:
<a href=http://www1.reklama.ru/cgi-bin/href/cit?45><img src=...></a>
В этом URL cgi-bin - это типовой каталог размещения CGI-скриптов, href - скрипт, а cit - значение переменной PATH_INFO.
далее...