- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
У меня на сайте работает самопальная сессия, а так же ЧПУ. Все дело в том, что мне самому приходится определять, работают у пользователя cookie или нет и, соответственно, в случае надобности, прикреплять идентификатор сессии к ссылке.
По этому при первом заходе на мой сайт пользователя незаметно пару раз кидает туда-сюда, чтобы проверить, работают ли у него cookie. Это выглядит примерно так:
GET /news/15 HTTP/1.0
Ответ:
Location /cookie-check?session_id=asdqwe&referer=/news/15
Set-cookie: session_id=asdqwe
....
Запрос
GET /cookie-check?session_id=asdqwe&referer=/news/15 HTTP/1.0
Ответ:
(скрипт проверяет, сохранились ли куки у пользователя и соответствуют ли они asdqwe, затем возвращает пользователя обратно на страницу)
Location /news/15 HTTP/1.0 - если куки вслючены
или
Location /news/15?session_id=asdqwe HTTP/1.0 - если выключены
...
После чего пользователь в конечном итоге попадает на с самого начала запрашиваемую им страницу и мы уже знаем, включены у него куки или нет.
ВОПРОС
Как на эти перебросы среагирует поисковик, зашедший на мой сайт?
А с браузерами проблем не возникает? Насколько я помню, например, 4ый экслорер отказывался ловить куку вместе с редиректом. Возможно, он не один такой, просто я с тех пор не сталкивался с такой проблемой.
По теме: поисковик будет весьма расстроен, поскольку его-то будет перекидывать на версию без кук. Причем при каждом заходе на новый URL.
А с браузерами проблем не возникает? Насколько я помню, например, 4ый экслорер отказывался ловить куку вместе с редиректом. Возможно, он не один такой, просто я с тех пор не сталкивался с такой проблемой.
Не возникает. А кому нужет этот 4-й эксплорер? (:
поисковик будет весьма расстроен, поскольку его-то будет перекидывать на версию без кук. Причем при каждом заходе на новый URL.
Нет, если он (клиент,робот,т.д.) не ловит куки, во второй раз его перекидывает с идентификатором сессии в ссылке. Так что поисковый робот (если он все-же ходит по Location-ам) будет со своим идентификатором, как нормальный пользователь с выключеными печеньками.
И всетаки?
Если поисковый робот заходит на сайт (http://mysite.com/), а там ему ответ:
Location: http://mysite.net/news/123?a=b&c=d
... он пойдет на эту страницу??
Не возникает. А кому нужет этот 4-й эксплорер? (:
Я к тому, что, может, он не один такой.
... он пойдет на эту страницу??
Да, пойдет. Но насчет второго раза не уверен (не связывался).
В любом случае, это несколько замедлит процесс индексации, поскольку по таким редиректам роботы ходят не сразу. Новый URL ставится в очередь, и вновь робот может прити и через пару недель. А тут еще и двойной редирект.
Вообще я бы не советовал связываться с идентификаторами сессии в урле. Неужели это настолько необходимо?
Думаю, Вам полезно будет понять, чем плохи идентификаторы сессии в URI вообще.
Уверен, после этого Вам не захочется разбираться, почему Ваш самопальный вариант хуже стандартного...
Алексей Пешков,э
А как тогда идентифицировать пользователя с выключеными куками??
Ну и как же по Вашему стандартный вариант определяет, включены куки клиента или нет?
Я могу только сказать почему он лучше (иначе я бы не заморачивался и не изобретал бы велосипеды):
Мой вариант работает исключительно с базой и не забивает /tmp нецелесообразным мусором. А так как мне всеравно надо вести в базе текущие сессии (например, чтобы посчитать количество пользователей онлайн) то какой мне смысл хранить пустые файлы?
Во вторых, я еще раз повторяю: у меня ЧПУ и так как стандартный вариант аттачит id сессии к урлу (автоматически), мне это подходит. Во вторых он пихает id в форму (hidden), который мне тоже совсем не нужен...
Да, пойдет. Но насчет второго раза не уверен (не связывался).
В любом случае, это несколько замедлит процесс индексации, поскольку по таким редиректам роботы ходят не сразу. Новый URL ставится в очередь, и вновь робот может прити и через пару недель. А тут еще и двойной редирект.
И вообще, я задал нормальный вопрос. Если не можете ответить, тогда не говорите не по теме... Извините.
bondarev.pp.ru,
Тоесть, если робот видет Location, он воспринимает его как очередную "ветку"?
Ну если все действительно так как Вы говорите, а именно как я понял: робот ходит не по всем ссылкам встреченым сразу, а по каким-то приоритетам отбирает, а все остальное ставит в очередь... Чтож, тут разумно будет продумать вариант без перекидов.
Скажите, а можно и серверного скрипта по каким-то параметрам определить что это робот? На сколько я понял, это USER-AGENT? Где взять список самых распостраненных роботов?
OFF.
Самопальные сессии - это зло. Именно по указанной Вами же причине...
Если уж очень жалко бросить наработанный код измените его так, чтобы он работал без кук.
Например, создаёте "сессию". Присваиваете идентификатор, сохраняете её в базе. Сохраняете в базе под этим идентификатором инфу о пользователе (в 99 случаях из ста будет нормально). При обращенни пользователя к странице собираете о нём инфу, смотрите есть ли для такой инфы идентификатор сессии и работете с ним. Не забудьте установить время жизни сессии и перед выборкой из базы делать удаление тех, время жизни которых истекло. Как идентифицировать пользователя - решайте сами. Вариантов масса, чем больше информации Вы соберёте, тем надёжнее будет работать механизм.
З.Ы. Не доверяйте кукам...
З.Ы.Ы. Оно Вам всё это надо? Проще написать обработку каталога /tmp, если он у Вас забивается мусором, чем извращаться так, как Вы пытаетесь это сделать в данный момент. Для того и был введён механизм сессий, чтобы помочь нормальным программистам избегать извращений...
З.Ы.Ы.
Если уж совсем неймётся - эмулируйте через жаба-скрип метод POST. Сделайте на каждой странице форму с единственным HIDDEN-элементом, в котором будете хранить идентификатор сессии. Добавьте на ссылки метод onClick...
Если уж совсем неймётся - эмулируйте через жаба-скрип метод POST. Сделайте на каждой странице форму с единственным HIDDEN-элементом, в котором будете хранить идентификатор сессии. Добавьте на ссылки метод onClick...
Вот это самый нормальный вариант, хоть и через Ж. :) onClick можно явно в код не вставлять, а сделать это на JavaScript через getElementsByTagName('a'). Один раз скрипт приписал в конец шаблона, и больше не вспоминать об этом.
Хотя, если уж пытаться охватить ВСЕХ пользователей, то надо вспомнить, что у некоторых и JavaScript отключен.
P.S. А что за задача такая, что без сессий не обойтись? Неужели настолько важно учесть ользователей без кук, что вы готовы ради этого пожертвовать оптимизацией сайта? (думаю, для вас не секрет, что PR у каждой вашей страницы будет минимальным?)
А насчет роботов - посмотрите UserAgent в логах (если он у вас пишется), если у вас есть логи за месяц-другой, там можно найти имена почти всех существующих роботов.
СКОРПИОН,
Вы конечно извините... Но я не первый день в IT. И не первый год. Я прекрасно знаю все это. Если Вы даете такие советы.. Вы мне не подскажите, как тогда работает встроенный механизм PHP чтобы определить включены куки или нет?
Если уж совсем неймётся - эмулируйте через жаба-скрип метод POST. Сделайте на каждой странице форму с единственным HIDDEN-элементом, в котором будете хранить идентификатор сессии. Добавьте на ссылки метод onClick...
через Ж :)
...
bondarev.pp.ru,
Я думаю, буду копать в сторону UserAgent, хотя это тоже через Ж... Тоесть, если UserAgent=робот, то сайт будет вести себя совсем по другому.
Спасибо всем.
P.S. Фрагмент из кода самопального(!) механизма сессии форума vBulletin v3.5.2 (такого как тут).
if (sizeof($_COOKIE) > 0 OR preg_match("#(google|msnbot|yahoo! slurp)#si", $_SERVER['HTTP_USER_AGENT']))
{
// they have at least 1 cookie, so they should be accepting them
.....
No comments?
СКОРПИОН,
Вы мне не подскажите, как тогда работает встроенный механизм PHP чтобы определить включены куки или нет?
Тупо работает... А по-другому никак.
Читайте: http://phpfaq.ru/sessions
Я уже сам понял, даже и читать не надо... Он просто первый раз аттачит идентификатор, а второй раз уже разбирается...
Короче, заключение.. Location стараться не использовать? Ну, я так посмотрел, что нучно всетаки учитывать User-Agent зашедшего и если это робот, вести себя немного по другому..
Тогда еще несколько вопросов (чтобы не заводить новый топик)
1. Какие лучше ссылки выдавать в контенте сайта, относительные или абсолютные? К примеру:
1.1. <a href="/news">news</a>
1.2. <a href="http://mysite.com/news">news</a>
2. Какой способ "оптимальнее" для поисковиков?
2.1. <img src="/images/img_001.gif" onclick="goToUrl('/news');">
2.2. <a href="javascript:goToUrl('/news');"><img src="/images/img_001.gif"></a>
И вообще, как выходить из этой ситуации, когда мне нужно, допустим, не просто пойти по ссылке, а пропустить через функцуию javascript?
3. Как поступить с окнами popUp? Поисковики их читают?
4. К примеру, мы на лету создаем в JS элемент с каким-то текстом...
div.innerHTML = '<div>some content</div>';
document.body.appendChild(div);
Это будет читаться роботом? Он вообще словит JS?
Спасибо всем.