Як вирішити проблему посилань canonical в плагіні All In One SEO Pack
Друзі, всім привіт. Сьогоднішня стаття буде трохи незвичайна. Я дам два посилання і доповню рішення своїми доробками. Так ось, чисто випадково, 😉 я дізнався про нову статті Олександра Борисова, в якій Саша розповідає про виявлене косяку в плагіні All In One SEO Pack. Треба віддати належне, Саша вміє створити ажіотаж навколо освітлюється теми.
І це непорожній звук, проблема дійсно існує. А якщо врахувати, що плагін All In One SEO Pack використовує 98% власників блогів на WordPress, то і в групу ризику потрапляють всі ці власники.
Джерела, де описана проблема та шляхи її вирішення
Я не збираюся переказувати всю статтю Саші, прочитати ви зможете її тут. Прочитайте її, так як вам потрібно знати суть проблеми. Тільки не поспішайте, хочу попередити вас друзі, що не варто робити поспішні висновки і поспішати міняти шило на мило. Досить подивитися на коментарі до статті Саші і зрозумієте, що народ просто кинувся зносити плагін і встановлювати новий. Але є й інші хороші вирішення цієї проблеми.
І це зовсім не означає, що запропоноване Сашком рішення не працює, ще як працює. І для багатьох це буде ідеальним рішенням.
А для тих же, хто вирішить залишити плагін All In One SEO Pack я пропоную прочитати статтю Дмитра Робіонека ось тут. Дмитро пропонує вирішення проблеми з посиланнями canonical без втрати нервових клітин.
Прочитайте ці дві статті і повертайтеся назад, я розповім, як налаштувати редирект якщо у вас посилання закінчуються НЕ .html, а слешем (\).
Мій метод настройки редиректу
Сподіваюся, ви прочитали статті Олександра і Дмитра. Я вибрав Димин варіант вирішення завдання. І ви помітили, що одним із способів вирішення проблеми є налагодження редиректу . Але ось тільки хлопці пропонують налаштувати редирект для сайтів і блогів, де посилання закінчуються .html.
Посилання з html
А на таких блогах і сайтах, як у мене, де адреси посилань закінчуються слешем - цей код не працює.
Посилання з слешем в кінці
І таких як я, судячи з коментарів в статтях, дуже багато. І якщо у вас такі ж посилання, то це рішення для вас.
Отже, вирішивши залишити плагін All In One SEO Pack, але при цьому вирішити проблему з посиланнями canonical - ви вже поставили чекбокс No Pagination for Canonical URLs в налаштуваннях плагіна.
налаштування плагіна
І додали фільтри в файл функції теми (functions.php) для посилань на попередню і наступну статті, які формує плагін.
Фільтр у функціях теми
Все у кого посилання закінчуються .html налаштували редирект, як пропонують Олександр і Дмитро - додавши в файл .htaccess цей рядок коду:
RewriteRule (. *) \. Html \ / ([0-9] +) $ $ 1.html [R = 301, L]
А тепер прийшла черга всіх у кого посилання закінчуються слешем або зовсім без нього. Так ось, як ви зрозуміли якщо до заслання виду http://vashdomen.ru/content/ додати цифри, скажімо 567, то вийде дубль сторінки http://vashdomen.ru/content/567/. Причому в коментарях зустрів доповнення, що якщо додати цифри і слеш в кінці, то редирект перестає працювати. Але, на кожну хитру ж .., є гвинт з лівого різьбленням.
Загалом, зберігаємо резервну копію файлу .htaccess, про всяк випадок. А в оригінальний файл, той, що на сервері додаємо ось цей рядок:
RewriteRule (. *) \ / ([0-9] + /) $ / $ 1 [R = 301, L]
Все, тепер будь-які цифри і Слеш лиходії не додавали, буде спрацьовувати редирект на цю ж посилання, але без цифр.
Тільки ось невеликий мінус, - тепер у вас швидше за все перестала працювати посторінкова навігація. Так як ці сторінки мають вигляд http://vashdomen.ru/page/4/. А після впровадження редиректу ця ж сторінка втратить цифру http: // vashdomen.ru/page/ і видасть помилку 404 .
Але і для цього є рішення, просто додайте в той, же файл .htaccess ось цей фільтр:
RewriteCond% {REQUEST_URI}! (/ Page *)
Обов'язково додайте цей рядок перед рядком редиректу!
Ось тепер все має працювати як треба. Якщо у вас щось не працює, то подивіться уважно на мої посилання і на ваші, - повинно бути відмінність. Це один момент. Другою причиною може бути конфлікт між правилами в файлі .htaccess.
А тепер найскладніший варіант, коли посилання формуються без html і без слеша в кінці http://vashdomen.ru/content. Перевірити було ніде, але завдяки Василю у нас вийшло вирішити і цю проблему. За що йому величезне спасибі!
В той же файл .htaccess потрібно додати ось ці рядки:
RewriteCond% {REQUEST_URI}! (/ Page *) RewriteRule (. *) \ / ([0-9] +) $ 1 [R = 301, L]
Різниця в один символ, і немає проблеми. На цій ноті вважаю питання вирішеним, тепер кожен знайде для свого блогу вирішення проблеми з плагіном All In One SEO Pack.
І обов'язково подивіться відеоурок - ви наочно побачите проблему та шляхи її вирішення.
На цьому у мене сьогодні все. Щиро сподіваюся, що даний метод допоможе налаштувати редирект на ваших сайтах і блогах. Всім бажаю удачі і до зустрічі в нових статтях і відеоуроку.
З повагою, Максим Зайцев .