Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
С содержимым .htaccess разобрались, давайте теперь рассмотрим /cgi-bin/para.cgi.
Если разместить наш .htaccess в директории /action, то при обработке адреса /action/1.para будет выполнен сценарий /cgi-bin/para.cgi, которому будет передан целый ряд дополнительных переменных:
n PATH_INFO – содержит адрес запрошенной «страницы», в нашем случае это /action/1.para;
n PATH_TRANSLATED – полное имя запрошенного файла, например, /www/docs/action/1.para;
n REDIRECT_STATUS – если всё в порядке, то 200. Обратите внимание: если файл 1.para не существует, то код всё равно будет 200. То есть сервер успешно запустил скрипт /cgi-bin/para.cgi, а существует ли файл 1.para – проблема скрипта.
n REDIRECT_URL – равно PATH_INFO.
Если в адресе содержалась ещё и строка запроса (например, /action/1.para?subsection=3), то она не включается в PATH_INFO и REDIRECT_URL, а попадает в переменные QUERY_STRING и REDIRECT_QUERY_STRING, о которых уже говорилось в начале статьи. Если вам понадобится полный адрес (вместе со строкой запроса), то ищите его, как обычно, в переменной REQUEST_URI.
Давайте разберём простенький пример. Пусть в файлах *.para будет храниться просто ASCII-текст, а скрипт /cgi-bin/para.cgi будет формировать html-документы из ASCII-текста, производя с ним нехитрые преобразования: квотирование небезопасных символов (&, «, >, <), добавление тега <br> в конце каждой строки, добавление тегов, открывающих и закрывающих html-документ. Имя файла, который следует обработать, сценарий будет брать из переменной PATH_TRANSLATED. Код сценария таков:
#!/usr/bin/perl
use strict;
my ($file, $url)=@ENV{qw/PATH_TRANSLATED REDIRECT_URL/};
open FH, "<$file" or die;
my $f=join('', <FH>);
close FH;
$f=~s/&/&/g;
$f=~s/</</g;
$f=~s/>/>/g;