Святослав Cherneckii идентификатори сесии и роботите

Сесия идентификатори и роботите

За дублиращи се страници, които вече сме говорили. Те не искат търсачките да индексират, те вредят на сайта и трябва да се отървете от тях напълно. Но на много сайтове може да съдържа връзки към идентификационния номер на сесията, и не можеш да направиш без тях. Как да се справим с тях?

Много разработчици подхождат към този въпрос е прост. да се идентифицират изобретил Cookie, така че не е необходимо да се използват идентификатори на сесии в URL адреса. Аз може би съм готов да го приема. Въпреки това, някои от посетителите, за да забраните Cookie в браузърите си ... те са, знаете ли, някъде сме чували, че от Cookie може да дойде някаква заплаха за сигурността и реших да не рискувам. Глупости, разбира се - да се намеси на идентификатора във връзката може да се случи много по-лесно, просто от небрежност на потребителя. Въпреки това, в тази глупост отиде на вярата. И собственик на онлайн магазин, не иска да губи клиента, защото на тези смешни предразсъдъци. Нека по-добре да се прави позоваване на "опашката".

Разумен компромис е очевидна. роботи сесия не се отварят. Как да направите това, ако двигателят е готов и роботи инспекции, които не са на разположение?

Необходимо е само да се въведе в тест на двигателя на променлива среда HTTP_USER_AGENT на. Ако тя съдържа името на бота търсене, което ние не искаме да се даде линк към сесиите, първото нещо, което трябва да не започнете сесия. И ако един робот дойде на връзката, която вече съдържа идентификационния номер на сесията, трябва да му даде HTTP-заглавната със статут на "404 Не е намерено», роботът счита тази връзка невалиден. Така че ние не само да предотврати появата на такива връзки в индекса, но също така и да принуди търсачката, за да изтриете всички препратки към идентификационния номер на сесията, тъй като не съществува.

По-долу - пример за кода за такъв тест. Тази част от кода се добавя във всички скриптове на двигателя вместо session_start () функцията прави.

$ Se_mask = "(Yandex | Googlebot | StackRambler | Yahoo Slurp | WebAlta | MSNbot)";
ако (ereg ($ se_mask, $ _ СЪРВЪРА [ 'HTTP_USER_AGENT'])), ако хедър ($ _ СЪРВЪРА [ 'SERVER_PROTOCOL'] "404 Not Found".) (празен ($ _ GET [ 'PHPSESSID'])!);
изход ();
>
> Друго session_start ();
>

Доста проста. $ Se_mask променлива съдържа регулярен израз маска, изброени имената на роботите, които не искат да се откажат идентификатор на връзката. Ако нито едно от имената, няма да се намери в HTTP_USER_AGENT, сесията започва. Така че, хайде нормалната посетител (или някакъв непознат робот ... но ако не го наричат ​​тук, проблемите, които имаме и малко притеснен).

Този прост за отстраняване на грешки на двигателя прави търсачката известно време, за да се отстранят всички препратки от индекса с идентификатор на сесия, която робот вече е събрана.

Прикрито разглежда въпроса за избор на едни и същи URL страници с различно съдържание - е една възможност за хората и другите роботи.

И ние току-що прочетох е възпрепятстван дублирани страници търсене робот с различен URL адрес. За това няма да има никакви санкции от търсачката. Напротив, препоръките за уебмастъри търсачките са помолени да не се даде на роботите им да сочат към идентификатора на сесията. Нито Yandex или Google не е необходимо да се съхранява милиарди копия на страницата си.