Коля Дубр жаждет, и его жена тоже (вернее, жаждет в первую очередь жена). Короче, плюс двое. Пострелять в оптимизаторов - благое дело)))
Ух, че-то я заморочился)
Вместо шаблона $urltemplate надо использовать вот такой:
$urltemplate = "/(http:\/\/(?:www.)*[^\/]+)((?:[\/]\w*)*[\/](?![\/]))*(.*)$/i";
А еще добавить вот так:
if (empty($path)) {$path = "/";}
после склеивания $path и $file, если $file не похож на файл или на query (для этого как раз там в шаблоне знак вопроса фигурирует, чтоб работать со ссылками вида root.ru/dir/?var=val
Так. Не нашел я старый вариант. Вот так приблизительно оно было:
function url_rel_to_abs($url, $base) { $urltemplate = "/(http:\/\/(?:www.)*[^\/]+)((?:[\/]\w+)+[\/](?![\/]))(.*)$/i"; preg_match_all($urltemplate, $base, $parts); /* В этом регэкспе делим УРЛ на 3 части: 1 - домен, без слеша на конце; 2 - путь, с обоих сторон слеши 3 - имя файла, т.е. все, что после последнего слеша */ $host = $parts[1][0]; $path = $parts[2][0]; $file = $parts[3][0]; if (!preg_match("/\.|\?/", $file) && !empty($file)) { //Если в имени файла нет точки или знака вопроса, //то это вероятно директория без завершающего слаша. //прилепляем к пути $path .= $file."/"; } if (preg_match("/^[\/]/", $url)) { //Если ссылка начинается со слеша, считаем от корня, //т.е. просто добавляем эту ссылку к хосту return $host.$url; } elseif (preg_match("/^\.\.\//", $url)) { //Если ссылка начинается с ../ - считаем сколько раз такая конструкция //встречается, и отрезаем от пути соответствующее кол-во директорий //(переходим на столько директорий вверх в иерархии) preg_match_all("/\.\.\//", $url, $levels); foreach ($levels[0] as $lev) { $path = preg_replace("/(?<=[\/])\w+[\/]$/", "", $path); } return $host.$path.(preg_replace("/\.\.\//", "",$url)); } elseif (preg_match("/^\.\//", $url) || preg_match("/^\w/", $url)) { //Если ссылка начинается с ./ (значит "текущий уровень иерархии") или //не с управляющей конструкции, удаляем из нее ./ и добавляем в конец базового УРЛ return $host.$path.(preg_replace("/\.\//", "", $url)); } }
Эта функция берет относительную ссылку и абсолютный адрес страницы, на которой эта ссылка находится, возвращает ссылку в абсолютном формате.
Нет нормальной проверки валидности УРЛов, и вообще это все чисто схематически. Как-то так.
Примерчик кода сегодня нарою, когда обед будет. Базовый УРИ - адрес, относительно которого рассчитываются все относительные адреса в документе.
По сути это адрес директории, в которой лежит документ. Например, конструкция ../index.php имеет смысл только в контексте известного базового адреса, например root.ru/dir/subdir/ - такая конструкция будет указывать на root.ru/dir/index.php, фактически сообщая браузеру, что надо взять базовый адрес, откусить от него последнюю папку и прилепить имя файла. Вот этому и надо научить робота. Но для этого он ДОЛЖЕН знать абсолютный адрес текущей страницы.
Битлов помним, Джима знаем, Пинк Флойд не любим. Проги пишем под Вивальди, ссылки ставим под Сплин, а в свободное от работы время слухаем тишину.
Счетчик со сбором запросов может быть сделан на чем угодно, где есть переменная окружения HTTP_REFERER, т.е. адрес страницы, с которой перешли на сайт. Страница поиска в яндексе имеет вид yandex.ru/yandsearch?text=ваш+запрос - вот этот "ваш запрос" нужно вычленить из адреса referer'a, и куда-нибудь запомнить.
Кроме того, REFERER пишется в логи сервера, некоторые анализаторы умеют оттуда доставать запросы. Но я бы не стал раньше времени заморачиваться и поставил счетчик от http://www.liveinternet.ru/ - его работа с запросами у меня ни разу не вызвала нареканий, а делов на 2 минуты.
Далее. Что-то мне подсказывает, что на ваш сайт большая часть посетителей с поиска идет по низкочастотникам типа http://www.yandex.ru/yandsearch?rpt=rad&text=%E0%E2%E8%E0%F6%E8%EE%ED%ED%FB%E5+%F7%E0%F1%F2%EE%F2%FB+%EC%EE%F1%EA%EE%E2%F1%EA%EE%E9+%E2%EE%E7%E4%F3%F8%ED%EE%E9+%E7%EE%ED%FB
По которым оптимизировать-то нечего, поскольку вы в выдаче единственные. Так что лучшей оптимизацией тут будет наращивание контента. С другой стороны, стоит попроставлять ссылок. Зарегистрируйтесь во всяких каталогах, отпишите хозяевам сайтов с вашей страницы ссылок с просьбой установить обратную, поменяйтесь с родственными ресурсами. Если речь идет о низкочастотных запросах, ссылочное ранжирование (текст ссылки на вас) не играет, как правило, особой роли, поскольку низкочастотников в принципе гораздо больше, чем ссылок, которые можно установить, так что в выдаче будет та страничка, где выше ранг. А ранг (PR/вИЦ) расползается от главной страницы. Так что чем больше ссылок на главную - тем лучше.
Еще как вариант - обмен контентом и публикация своего контента где-то еще "за ссылку". С ссылки в тематических статьях и пользователи частенько приходят, если правильно разместить, и ссылка сама по себе - дело хорошее. В идеале еще написать несколько промо-статей, где в доступной форме разъяснить, чем вообще люди у вас на сайте занимаются, и тоже опубликовать, где получится. Поскольку проект у вас некоммерческий, денег много не возьмут, а если хорошо напишите - могут и бесплатно сделать.
ИМХО Вам подойдут запросы "проведение праздников в Самаре", "корпоративные праздники в Самаре". По ним, полагаю, Вы уже вылезли куда надо. Накой Вам московский траффик?
В каталоге ссылок наполнить тематические рубрики и снести "прочее". Тематический обмен рулит.
Если я правильно понял проблему, то да, сталкивался я с таким, когда писал индексирующего бота на сайт (делать поиск по сайту на статике).
Подробно объяснять не буду. Суть в том, что когда робот приходит на страницу, он первым делом вычисляет базовый URI для этой страницы (явным образом его задают крайне редко). Далее для каждой ссылки выполняем преобразование к абсолютному URI, руководствуясь пунктом 5.2. Resolving Relative References to Absolute Form вышеупомянутого http://www.faqs.org/rfcs/rfc2396.html, и уже абсолютные URI (от корня, или даже вместе с доменом и протоколом, по потребностям) пишем в массив/БД опять же в зависимости от целей робота.
RFC 2396 одно время лежал в библиотеке Мошкова переведенный, но что-то я его не нашел. Перевод существует.
+30
+20
+160
без изменений
+10
Ничего так) один сайт поднялся на 4 места в рубрике яка, теперь сидит на третьем. Жаль только рубрика бестолковая)
Что умиляет, с прошлого пересчета только посносил ссылки на сайты, с которыми так и не получилось поменяться. Ни одной новой ссылки не выставлено.
YAGR, Real PageRank - это то, что отдает гугля, если к ней обращаться каким-то другим способом. Там на сайте дядька-автор подробно описывает технологию. Я все собираюсь перевести, руки не доходят. Грубо говоря, тулбар обращается к гугле вот так:
http://www.google.com/search?client=navclient-auto&ch=6-1769550202&features=Rank&q=info:www.potrebitel.net/
то есть вставляя перед УРЛ "info:", а если обратиться вот так
http://www.google.com/search?client=navclient-auto&ch=6-306240379&features=Rank&q=www.potrebitel.net/
то есть без "info:", вы получите другой результат, точнее целую кучу результатов, которые, по предположению дядьки-автора являют собой пейджранки бэклинков сайта. Бэклинки, разумеется, берутся далеко не все и сугубо рандомно.
В последний апдейт у меня на двух сайтах действительно вылез ПР, который пророчил этот сервис, а на одном сайте - нет. По другим забыл посмотреть.