Багатофункціональність правил rewrite на Apache


Сервери на Apache мають дуже хорошу і корисну функцію – mod_rewrite. Цю функцію сервера часто порівнюють із швейцарським ножем для роботи з URL, так як вона несе дуже важливі можливості. Кому-то сьогоднішній матеріал здасться досить "технічним", але в SEO без цього ніяк.

  • Зміна URL: запис динамічних URL як читаються, Літерних URL
  • 301 редирект: говорить браузеру або пошуковому роботу що сторінка була переміщена.

Ці можливості дуже різні за своїми властивостями і несуть різні результати. Функція rewrite справляється з цими завданнями в. Conf файлі сервера, або в. Htaccess фото віртуального сервера.

Як працює функція rewrite?

Це команда, яку ви записуєте в один з файлів конфігурації вашого сервера. Багато записують цю команду в файл. Htaccess, який насправді відповідає лише за директорію на сервері, де він лежить.
Щоб застосувати цю команду для всього сервера повністю, потрібно записати цю команду в файл apache2.conf. Однак, якщо файл .Htaccess покласти в корінь сайту, то він буде працювати для всього сайту. Якщо ви зібралися використовувати файл. Htaccess, то переконаєтеся в тому, що додали в нього директиву AllowOverride.
Кожен запит браузера до сервера проходить через цей файл. Пам’ятайте, що при кожному відвідуванні сторінки вашого сайту відбувається декілька запитів до сервера: один до HTML, один до кожного css файлу, один до кожного файлу Javascript і один до кожної картинки.
Запитаний URL порівнюється з регулярним виразом, яка є першим параметром mod_rewrite у файлі. Htaccess. Якщо вони співпадають, то другий параметр у mod_rewrite використовується для створення HTML і надсилається назад браузеру. Це не обов’язково означає що сторінка перенаправляється … для цього треба використовувати редирект.
А чи потрібен вам взагалі редірект? Не поспішайте…
Не плутайте 301 редірект з іншими рішеннями URL в SEO. Всі вони робляться через mod_rewrite і дуже, дуже схожі, але виконують різні завдання.
Ви повинні використовувати 301 редірект коли хочете сказати браузеру або роботу пошукової машини "Цією сторінки тут більше немає, іди з цього новою адресою … я недавно її перемістив". Ви:

  • говорите що сторінки тут більше немає
  • показуєте браузеру або боту її нову адресу
  • говорите браузеру або боту, що переміщення тимчасове
  • говорите боту, що все що посилалося на стару адресу сторінки має посилатися на новий, так як контент залишився той самий, його просто перемістили.

Якщо ви використовуєте mod_rewrite для маскування URL, Ви створюєте зв’язок URL сторінок, які хочете показати користувачам (у навігації, посиланнях в контенті, картах сайту і т. д.) з реальними URL цих сторінок, які не буде видно нікому.
Це робиться для того, щоб перевести стандартні URL, Які складаються з ID категорій, продуктів та інших параметрів, в літерні URL, що складаються з слів та несучі інформацію.
Приклад:
/ Products / details.asp? Pid = 11623 catid = 42
Швидше за все, в наведеному URL категорія 42, ID продукту 11623. Текст, адреси картинок і інше зберігається в базі даних під номером 11623, а інформація про категорії зберігається в іншій таблиці. Для того, щоб вивести заголовок сторінки, мета-теги опису і ключових слів, веб-сервер шукає ці дані в категорії під номером 42 в базі даних. Якщо ви захочете виводити посилання на інші продукти, то потрібно зробити ще запити до таблиць в базі даних, де вони зберігаються.
Щоб зробити цю посилання більш "людяною" вона має виглядати приблизно так:
/ Products/necklaces/purple-amethyst-necklace-11623
Використовуючи таку посилання, ви також "витягуєте" всі параметри сторінки з бази даних, але вона вже виглядає більш логічною та інформативною. Посилання вашого сайту виглядають гарними, та й до того ж включають в себе ключові слова.
Використовуєте ви. Htaccess або просто 404, Рішення про використання 301 редіректу прийняти просто:

  • якщо ви хочете повідомити пошуковику, що сторінка знаходиться в іншому місці, то використовуйте 301 редірект
  • якщо ви хочете зробити красиві URL і замаскувати стандартні не слід використовувати 301 редирект.

Що відбувається з вагою посилань, якщо не використовувати 301 редірект?

Нічого. Ви також продовжуєте нарощувати посилальну масу і покращувати внутрішню перелінковка. До тих пір, поки пошукові боти бачать, що наша сторінка (приклад: / products/necklaces/purple-amethyst-necklace-11623) до цих пір існує, пошукач отримує весь її контент і додає повна вага посиланням разом зі статусом HTTP 200 (OK ).
Синтакс mod_rewrite
Візьмемо простий URL:
за правилом – oldstuff \. html $ newstuff.html
Перевіряємо що запитана сторінка oldstuff.html існує. Якщо існує, то йде перенаправлення на сторінку newstuff.html для її генерації і відправки користувачеві. Пошуковий робот або браузер до сих пір думає, що знаходиться на сторінці oldstuff.html.
Інші зауваження: знак позначає початок імені сторінки, тому пошуковик не переплутає, скажімо сторінку reallyoldstuff.html з нашою oldstuff.html. Знак $ позначає кінець імені файлу, тому бот не переплутає нашу сторінку oldstuff.html з сторінкою oldstuff.htmlly.
Що щодо того слеша в середині? Це перший параметр регулярного виразу, в якому кожен символ має збігатися з запитані. Те, що ми ставимо за знаком \ називається прихованих символів, тобто Ми не маємо на увазі кожен символ окремо, а ми говоримо що тут їх набір повністю.
Тепер, 301 редірект:
oldstuff \. html $ newstuff.html [R = 301, L]
Це 301 редірект. Це редірект, так як в дужках ми використовуємо R. Це саме 301 редірект, тому що ми після знака одно ми поставили 301, а якби після знака одно ми нічого не прописали, то це був би 302 редірект, який означає, що зовсім недавно ми перемістили сторінку і не хочемо, щоб посилання на неї передавали вагу. У 99% випадків ви будете використовувати саме 301 редірект, а не 302.
У квадратні дужки укладено два параметри, відокремлені комою. Другий параметр "L" означає Last, то є останній. Він говорить, що сторінка в вираженні збігається з запитаної, і при наступних запитах в. Htaccess таку перевірку можна буде не робити. У 99% випадків використання 301 редіректу ви будете використовувати параметр "L".
У 92% випадків використання операцій, не пов’язаних з 301 редиректів ви будете використовувати параметр "L". Чому не в 99% випадків?
Іноді буває корисним використовувати кілька правил rewrite до одного URL. Припустимо, у вас є деяка кількість папок, що перебувають у першому рівні, з якими ви хочете виконати операції rewrite.
Також у вас є кілька вкладених у ці папки папок, з якими ви хочете виконати ці операції теж. У першому правилі ви можете замінити ім’я головної папки, а потім друге правило, яке буде перейменовувати вкладені в неї папки.
Вихідний URL:
/ Prods/metal1/necklace-11623.htm
За першим правилом mod_rewrite URL можна поміняти / jewelry-products / замість / prods /, тому ми отримуємо:
/ Jewelry-products/metal17/necklace-11623.htm
За другим правилом ми замінимо / gold / замість / metal17 /:
/ Jewelry-products/gold/necklace-11623.htm
Скажімо у нас є каталог коштовностей з цінами і фотографіями названими [product ID]. Jpg. Таке ім’я фото дуже зручно для програміста і бази даних, але воно зовсім не прийнятно для SEO. Ви можете використовувати правила rewrite для зміну імені картинок, щоб пошукові боти "полюбили" наші картинки і взяли в індекс. У нашому випадку шлях буде наступним:
/ Images/necklaces/gold/amethyst-11623.jpg
замість цього:
/ Images/prods/11623.jpg
Тепер, правило rewrite застосовується не тільки для створення редіректу або перетворення URL.
MyOST: Потрібно пам’ятати, що 301 редірект і Яндекс – це поняття дуже пов’язані з часом, а точніше, Ви можете прочекати 2-3 місяці, поки дзеркальник не майже візитом сайт, а після ще трохи часу потрібно почекати для апдейта дзеркальник.
———————-
После просмотра "Тихий Океан" и "Братья по оружию" от HBO задумался над приобретением качественного телевизора. И вот я наконец-то созрел – решил купить FullHD Медиа плеер Popcorn Hour A-200 и к нему телевизор Порнослоника. Какую модель я пока ещё не знаю, нужно посмотреть насколько хватит денежек.

It is main inner container footer text