Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
<li><a href="5.html">5.html</a></li>
</ul>
</body>
</html>
Как видите, все ссылки «указывают» тоже на серые документы, вернее, они оставляют информацию о цвете (путь) неизменной.
По адресу /cgi-bin/pi.cgi/red/1.html мы обнаружим аналогичную структуру «красных документов».
Мысль, намеченную в этом сценарии, легко развить в необходимом русле. Единственное, о чем следует позаботиться – это безопасность. Отсутствие хотя бы каких-нибудь проверок в сценарии pi.cgi чревато только комичными ситуациями. Например, такой: /cgi-bin/pi.cgi/white/1.html. Но если ваш сценарий работает с файлами, то всегда надо быть готовым к тому, что кто-то запросит документ /cgi-bin/koi2win.cgi/../../../etc/passwd. Конечно, конкретно эта атака наивна и, скорее всего, не представляет серьёзной опасности, хотя всё зависит от того, как устроен koi2win.cgi.
Замечу ещё, что всё сказанное справедливо не только для CGI-сценариев, но и для SSI-документов. При обращении к ресурсу /dir/doc.shtml/data (конечно, предполагается, что doc.shtml не директория, а SSI-документ) будут также созданы две дополнительные переменные PATH_INFO и PATH_TRANSLATED.
Кроме того, SSI-процессором всегда создаётся переменная DOCUMENT_PATH_INFO, которая пуста, если PATH_INFO и PATH_TRANSLATED отсутствуют.
Я думаю, что у внимательного читателя уже возник вопрос, можно ли усовершенствовать наше решение так, чтобы избежать таких «неповоротливых» адресов, превратив, например, /cgi-bin/pi.cgi/gray/3.html в /color/gray/3.html. Ответ на этот вопрос – да, возможно. Как раз это обсуждается в следующем разделе.
Магия Action
Наверное, самые большие возможности предоставляет директива Action. С её помощью вы можете назначить скрипт-обработчик для определённых типов файлов.
Приведу пример. Напишем в .htaccess следующие директивы:
AddHandler my-handler .para
Action my-handler /cgi-bin/para.cgi
Обе директивы, содержащиеся в этом файле, принадлежат к категории FileInfo.
Первая – добавляет новый дескриптор файла, ассоциированный с расширением .para. Теперь все файлы *.para будут ассоциироваться с манипулятором my-handler. Особенностью директивы AddHandler является то, что она не чувствительна к регистру, то есть распространяется в равной мере и на файлы *.Para, *.PARA, *.PaRa и так далее. Кроме того, символ «точка» необязателен.
Вторая директива – Action – назначает действие, которое необходимо выполнять для файлов, ассоциированных с манипулятором my-handler. Теперь любое обращение к файлу *.para должно приводить к запуску сценария /cgi-bin/para.cgi.
Для полноты картины добавлю, что вместо дескриптора можно использовать MIME-тип. В принципе, нетрудно представить случаи, когда это будет удобно. Например, вы поддерживаете публичный хостинг и хотите, чтобы ко всем страницам ваших клиентов автоматически добавлялся баннер. Тогда проще привязать обработчик html-документов не к двум расширениям (.html и .htm), а к одному-единственному MIME-типу (text/html).