Коля Дубр

Коля Дубр
Рейтинг
153
Регистрация
02.03.2005
Должность
NetCat
Интересы
cms, музыка, лингвистика

Коля Дубр жаждет, и его жена тоже (вернее, жаждет в первую очередь жена). Короче, плюс двое. Пострелять в оптимизаторов - благое дело)))

Ух, че-то я заморочился)

Вместо шаблона $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:", вы получите другой результат, точнее целую кучу результатов, которые, по предположению дядьки-автора являют собой пейджранки бэклинков сайта. Бэклинки, разумеется, берутся далеко не все и сугубо рандомно.

В последний апдейт у меня на двух сайтах действительно вылез ПР, который пророчил этот сервис, а на одном сайте - нет. По другим забыл посмотреть.

Всего: 1529