27.9. Адреса поисковых механизмов в Internet
Такие поисковые механизмы, как Google (<http://www.google.com/>) и All the Web (<http://www.alltheweb.com/>), являются попыткой просмотра всей Internet. Они стали существенным ресурсом для пользователей Internet, и любой общедоступный Web-узел только выигрывает от возможности попасть в их список. Поисковые механизмы - это роботы, позволяющие исследовать Web-страницы на Web-узлах, которые индексируют PHP-сценарии аналогично HTML-файлам. Если на странице имеются ссылки, то они отслеживаются и весь Web-узел постепенно становится исследуемым.
К сожалению, многие роботы не отслеживают ссылки, которые содержат переменные метода form. Ссылки, содержащие знаки вопроса, могут привести робот к бесконечному циклу, поэтому они запрограммированы таким образом, чтобы не попадать в такие ситуации. Это является определенной проблемой для Web-узлов, в ссылках которых содержатся переменные метода form. Передача переменных метода form в тегах является естественным для PHP методом обмена данными, но это может закрыть такие Web-страницы для поисковых механизмов. Для того чтобы справиться с этой проблемой, данные должны передаваться в формате, который напоминает обычные URL.
Сначала рассмотрим, каким образом Web-сервер принимает URI и находит соответствующие им файлы. URI представляет собой виртуальный путь, это часть URL, которая следует сразу после имени узла. Он начинается с косой черты, за которой может следовать каталог, другая косая черта и т.д. Так шаг за шагом Web-сервер находит соответствие между каталогами, заданными в URI, и каталогами, имеющимися в файловой системе. Сценарий выполняется, когда он соответствует части URI, даже если за ним следует информация о каталоге. Обычно эта излишняя часть информации о пути отбрасывается, но ею можно воспользоваться.
В листинге 27.9 сценарий работает с Web-сервером Apache, откомпилированным для ОС Unix, и не может работать с другими Web-серверами. Он опирается на переменную среды PATH_INFO, которая в других контекстах не принимается во внимание. Каждый Web-сервер создает уникальный набор переменных среды, хотя есть и некоторые исключения.
| Листинг 27.9. Использование информации о пути
<?php
if(isset($_SERvER['PATH_INFO']))
{
//удалить файлы .html в конце
$path = str_replace(".html",
"", $_SERVER['PATH_INFO']); //удалить ведущий символ косой черты $path = substr($path, 1); //просмотреть части $pathvar = array(); $v = explodeC'/", $path); $c = count($v); for($i=0; $i<$c; $i += 2)
{
$pathVar[($v[$i])] = $v[$i+1];
}
print^^bi просматриваете сообщение " . "{$pathVar['message']}<br>n"),-
}
// выбрать произвольный идентификатор $nextID = rand(1, 1000);
print("<a href="{$_SERVER["SCRIPT_NAME"]}/message/ $nextID.html">" .
"Просмотр сообщения $nextID</a><br>n");
?>
Получить доступ к программному коду, представленному в листинге 27.9, можно по URL http://localhost/corephp/27-9.php/message/1234.html. В этом случае происходит подключение к локальному серверу, имеющему каталог corephp в корневом каталоге документов. Стандартная инсталляция Web-сервера Apache разместит его в каталоге /usr/local/apcache/htdocs. Сценарий имеет имя 27-9.php, и все, что располагается за именем сценария, затем будет помещено в переменной PATH_INFO. Файл с именем 12 34.html не существует, но для Web-браузера это будет обычным документом HTML. Для поисковой системы это будет представляться аналогичным образом.
В действительности программный код, представленный в листинге 27.9, не делает многого. Он разбивает информацию о пути на части, которые будут использоваться в качестве имени и значения переменной. Сценарий считает message идентификатором. Он может быть ссылкой на запись в реляционной базе данных. Автором был добавлен фрагмент кода, который использует случайное число для создания ссылки на другую воображаемую запись (вспомните доску объявлений (BBS) из главы 23, "Интеграция баз данных"). Это решение можно применить, и каждое сообщение будет одним HTML-файлом.
Автором были представлены только основные принципы этого метода. Но есть "подводные камни" и возможности для его доработки. Следует помнить, что Web-браузеры хорошо работают с относительными URL и что использование информации о пути мешает обрабатывать изображения, которые могут использоваться в ваших сценариях. Поэтому лучше работать с абсолютными путями. Может также понадобиться дать имя PHP-сценарию без расширения. При работе с Web-сервером Apache можно задавать тип документа по умолчанию. Для этого нужно воспользоваться директивой настройки DefaultType или директивой mod_rewrite. По необходимости обратитесь за справкой на Web-узел Web-сервера Apache по адресу <http://www.apache.org/docs/>.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Проэктирование. Часть Четырнадцатая.
04-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Проэктирование. Часть Триннадцатая. | PHP. Эффективность и отладка |