Добрий день, друзі, знову я давно не писав. Новорічний аврал, знаєте, але я все одно на зв’язку. Пам’ятаєте вислів «Все нове – це добре забуте старе»? Так от сьогодні я хочу поговорити про ази оптимізації, а саме про внутрішню оптимізацію сайту. Як я помітив, дуже багато настільки впевнені в тому, що вони відмінно знають, що навіть не замислюються і добровільно ігнорують найважливіші моменти, без урахування яких зовнішньої оптимізації не може йти і мови. Зізнатися, я й сам грішу часом, і за останній тиждень переверстывал свої проекти.

І взагалі останнім часом я все більше і більше переконуюся в тому, що внутрішня оптимізація набагато важливіше зовнішніх факторів і дозволяє заощадити величезні бюджети в підсумку. Отже, вистачить лірики, приступимо до обговорення тих самих важливих моментів.

UPD А тут керівництво по оптимізації цільових сторінок сайту.

Трохи про протоколі http

Згадаємо деякі важливі для нас коди стану HTTP:
HTTP/1.1 200 OK
HTTP/1.1 404 Not Found
HTTP/1.1 301 Moved Permanently
HTTP/1.1 304 Not Modified

Для перегляду інформації віддається сервером я рекомендую використовувати плагін для Mozilla FireFox під назвою HttpFox, дуже зручна штука для аналізу. Так само можна використовувати FireBug, у мене стоять обидва плагіна, чого і вам раджу. Якщо ж не хочеться зв’язуватися з плагінами, є і онлайн сервіси, наприклад, www.askapache.com, але часу на введення капчі ви витратите набагато більше, ніж на встановлення плагінів. Якщо визначилися з вибором, то поїхали далі.

Отже, а навіщо це нам взагалі треба? Перш ніж приступати до будь-якої оптимізації, треба переконатися, що наш сайт віддає правильні відповіді. Відкриваючи будь-яку існуючу сторінку сайту, ми повинні отримати код стану 200 OK, означає, що все в порядку.

Відкриваючи помилкову або неіснуючу сторінку, ми обов’язково повинні отримати код помилки 404 Not Found. Це дійсно важливо, особливо для сайтів з до ами без ЧПУ, де, припустимо, що посторінкова навігація будується у вигляді /index.php?page=2. А що якщо в кінці вписати неіснуючий номер сторінки? Якщо ви отримаєте код 200 OK, то потрібно це терміново вирішувати!

Якщо ви міняєте структуру сайту або взагалі повністю змінюєте CMS, то при неможливості збереження старих адрес сторінок слід зробити 301 редирект на нові. Це буде означати, що сторінка тепер знаходиться за новою адресою, а всі вхідні посилання і накопичений сторінкою «вага» (якщо кому завгодно «траст») збережуться.

А навіщо ж у список важливих кодів відповіді сервера я написав 304 Not Modified? Це стан означає, що сторінка не змінилася, і роботу нема чого її заново завантажувати і можна йти далі. Навіщо це треба? А для того, що на великих порталах може містити величезну кількість сторінок, і, щоб швидко проіндексувати нові (або переіндексувати старі, але змінені), роботу може знадобитися більше місяця. А ви ж хочете, щоб пошуковик підтримував індекс вашого сайту в актуальному стані, правда! На досвіді одного зі своїх сайтів, кількість сторінок якого перевалює за півмільйона, знаю, що переіндексація займає від місяця до двох!

Тільки от чомусь розробники різних CMS про це забувають або не думають взагалі, а треба було б! Так що поки таку фішку з кодом відповіді 304 можна назвати вищим пілотажем!
Якщо з базою все нормально, рухаємося далі.

Внутрішня оптимізація і явні дублі сторінок сайту

Найважливіше питання, яке треба вирішити ще до початку розробки сайту — вибрати «правильну» CMS. На жаль, дуже часто розумієш, що обрав «неправильну» CMS вже по закінченні певного часу, коли переробка сайту і зміна CMS неможливі з ряду причин. Тому доводиться битися з вже існуючими «болячками».

Можливі проблеми:

  • Існування сторінок за кількома адресами, наприклад, з ЧПК і без нього. Це технічна проблема CMS, і вирішувати її треба на технічному рівні.
  • Існування сторінок за адресами зі слешем на кінці і без нього (наприклад, site.ru/category і site.ru/category/). Це так само пов’язано з CMS.
  • Існування дублів головної сторінки виду site.ru і site.ru/index.php. Краще всього якщо движок буде сам вирішувати цю проблему, якщо ні, то раджу використовувати канонізацію url’ов (наявність на сторінці ). Цей мета-тег підтримує як Яндекс, так і Google.
  • Видача головної сторінки замість 404 помилки для неіснуючих сторінок. Це проблема CMS, але останнім часом не помічав, щоб популярні движки допускали такі помилки, проте раніше я з таким зустрічався.
  • Існування сайта на двох доменах з www і без (www.site.ru і site.ru в очах пошукових систем це абсолютно два різних сайту). На щастя, ця проблема легко вирішується за допомогою 301 редіректу і файлу .htaccess
    Для основного домену без www:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    Для основного домену з www:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
    RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

  • Генерація адрес сторінок з сесіями для пошукових роботів. Ця проблема дуже поширена для більшості форумних движків. З-за цього в індексі може з’являтися величезна кількість однакових сторінок, але з різними ідентифікаторами сесії до е. Рішень маса, тому описувати тут нічого не буду, достатньо погуглити.

Все це відноситься до чітким або явним дублям і завдає найбільшої шкоди сайту.

Внутрішня оптимізація і неявні дублі сторінок або псевдодубли

Дуже важливим є поняття відсотка унікальності конкретної сторінки щодо інших проіндексованих сторінок в рамках сайту.

Ось поширений приклад: є сторінка сайту, де є можливість коментування, при певній кількості коментарі переносяться на другу сторінку, і ця сторінка дублює вміст першої, але з іншими коментарями. А таких сторінок може бути багато, і з появою кожної наступної цінність основної сторінки знижується.

Подібним чином шкодять сторінки категорій, тегів, архівів і версії для друку. Всі вони частково або повністю дублюють важливий вміст основних сторінок. Цього не можна допускати.

Якщо не вдається вирішити проблеми на технічному рівні (наприклад, «допиливание» CMS або установка модулів і плагінів), доведеться просто закривати «небажані» сторінки від індексації. Існує два основних методи: створення у файлі robots.txt необхідної директиви і наявність на сторінці мета-тега .

За проблеми, описані вище і пов’язані з дублями сторінок або їх частин, пошукові системи в строгому порядку накладають на сайт фільтри і знижують його видачі. Бувають і випадки повного вильоту сайту з індексу, т. к. «генератори сміття» пошукачам зовсім ні до чого!

Так само варто закривати від індексації сторінки, що не мають цінності (профілі користувачів, логи, які-небудь «проміжні» сторінки тощо), технічні сторінки (сторінки зворотного зв’язку, реєстрації, додавання новини і подібні), тобто ті сторінки, на які не планується вести людей.

В якості основного інструменту для пошуку проблемних місць будь-якого сайту я використовую панелі вебмастера Гугла і Яндекса, цього більш ніж достатньо!

Я дуже сподіваюся, ви подужаєте і втілюйте в життя ці прості поради з внутрішньої оптимізації сайту. Цими правилами ні в якому разі не варто нехтувати, позитивний ефект часом може бути просто приголомшливим, я сам особисто бачив!

Повторюся, не забувайте про моє керівництво по внутрішній оптимізації сторінок сайту, все-таки структура сайту в цілому і структура цільових сторінок це зовсім різні речі та поєднувати дві теми не правильно!

До швидких зустрічей, друзі, і удачі вам у боротьбі з хворобами своїх сайтів. Хороший сайт – здоровий сайт!

З повагою, Олександр Алаєв