Як за допомогою 301 редиректу. Заборонити конкретний файл

💖 Подобається?Поділися з друзями посиланням

З 301 редиректом (переадресацією) ви обов'язково зіткнетеся при склеюванні дзеркал сайту з префіксом WWW і без нього, у разі переїзду сайту на новий домен, з HTTP на HTTPS, перенесення сторінки в інший розділ сайту і зміни її адреси. У всіх цих випадках важливо зберегти позиції та трафік, перенаправляючи його на нові сторінки. Як це зробити? Пропонуємо технічну інструкцію.

Код стану HTTP 301 (Moved Permanently або 301 редирект) - це стандартний , який повідомляє, що ресурс, що запитується, переміщений і отримав новий URL.

Для SEO 301 редирект важливий, оскільки він дозволяє виключити з пошукової видачістарий URL і замінити його новим без втрати сторінкою ваги та, відповідно, погіршення її позицій.

Налаштувати 301-й редирект можна у різний спосібдопомогою HTML, PHP, плагінів для CMS, скриптів), але найнадійніший і найпростіший варіант - за допомогою .htaccess (для Apache) або web.config (для IIS).

Налаштування 301 редиректа в.htaccess

Htaccess - це файл додаткової конфігурації веб-сервера Apache, за допомогою якого можна встановити налаштування на рівні окремих каталогів. На відміну від головного конфігураційного файлу httpd.conf , директиви в.htaccess поширюються тільки на той каталог, де він розміщений, і на дочірні каталоги.

Якщо у кореневій папці вашого сайту немає файлу.htaccess, його потрібно створити та завантажити за допомогою FTP-клієнта. Тепер можна розпочинати налаштування.

Коли вам потрібно зробити редирект із поточного домену на інший (наприклад, при переїзді сайту), можна використовувати директиви модуля mod_alias. Пропишіть в.htaccess наступну директиву (замість newsite.ru вкажіть ваш новий домен):

Redirect permanent / http://newsite.ru/

Redirect 301 / http://newsite.ru/

Наведемо приклади налаштування переадресації 301.

Редирект зі сторінки page1.html на сторінку page2.html :

Redirect 301 /page1.html site.ru/page2.html

Редирект з головної сторінкисайту на сторінку каталогу /cat:

Redirect 301/site.ru/cat

Редирект з каталогу /cat на головну:

Redirect 301 / cat site.ru

Редирект часто використовують для склеювання дзеркал. У цьому випадку використовується модуль mod_rewrite. Наприклад, якщо ви хочете, щоб йшов редирект, то пропишіть такі рядки (де yoursite.ru- Ваш домен):

RewriteEngine On
RewriteCond %(HTTP_HOST) ^www.yoursite.ru$
RewriteRule ^(.*)$ http://yoursite.ru/$1

І навпаки - редирект з домену без www на домен з www:

RewriteEngine On
RewriteCond %(HTTP_HOST) ^ yoursite.ru
RewriteRule (.*) http://www.yoursite.ru/$1

Редирект всіх сторінок сайту при :

RewriteEngine On
RewriteCond %(SERVER_PORT) !^443$
RewriteRule .* https://%(SERVER_NAME)%(REQUEST_URI)

Якщо не спрацює, можна спробувати такий варіант:

RewriteEngine On
RewriteCond %(HTTPS) =off
RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

Також 301 редирект використовується у боротьбі з дублями сторінок. Наведемо кілька прикладів.
Для пошукових систем URL http://www.yoursite.ru/ та http://www.yoursite.ru є різними. Тому треба вирішити, який тип використовувати: зі слішем наприкінці або без нього. Для того, щоб прибрати слєш в кінці URL, пропишіть правило:

RewriteEngine On
RewriteCond %(HTTP_HOST) (.*)
RewriteCond %(REQUEST_URI) /$
RewriteRule ^(.*)(/)$ $1

Додати сліш можна таким чином:

RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_URI) !(.*)/$
RewriteRule ^(.*[^/])$ $1/

Щоб замінити все.htm файли.html файлами , пропишіть наступні рядки:

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.htm$ $1.html

Якщо ви прописуєте кілька директив, то рядок "RewriteEngine on" вказується один раз - з її допомогою включається модуль mod_rewrite.

Якщо ви створюєте файл.htaccess з нуля, всі команди вказуються всередині таких рядків:



Наприклад, так буде виглядати файл.htaccess з двома редиректами: з www на без www і зі сторінок без слеша на сторінки зі слешем наприкінці:

Налаштування редиректу у web.config

Варіант редагування за допомогою. htaccess працює тільки для Apache. Для веб-сервера IIS налаштовувати переадресацію потрібно у файлі web.config. Наприклад, редирект з однієї сторінки (yoursite.ru/page.html) на іншу (yoursite.ru/page2.html) виглядатиме так:








301 редирект з домену з www на домен без www можна налаштувати таким чином:















Альтернативні способи налаштування переадресації

Якщо з якоїсь причини ви не можете створювати та редагувати web.config або .htaccess (наприклад, через обмеження на хостингу) або вам потрібна певна обробка отриманих даних, їх модифікація або перевірка, за результатами якої реалізується перенаправлення, ви можете налаштувати редирект за допомогою PHP.

Синтаксис наступний:

В цьому випадку відбувається примусова передача коду HTTP-відповіді 301 і користувач перенаправляється на сторінку http://newsite.ru/.

Якщо у вас невеликий сайт із парою сторінок, то редирект можна зробити за допомогою HTML:

Змінюючи цифру 0, ви задаєте кількість секунд до переадресації. І тут редирект реалізується не так на боці сервера, але в боці клієнта (не передається заголовок 301).

Також редирект можна зробити за допомогою JavaScript:


window.location.replace("newsite.ru");

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

Варіантів редиректів безліч. Полегшити роботу можна за допомогою генераторів редиректів. Це онлайн-сервіси, які видають готові коди – вам потрібно лише вказати, звідки і куди перенаправити користувача. Ось деякі з цих сервісів: www.webconfs.com, www.rapidtables.com, www.htaccessredirect.net.

Як налаштувати редирект, якщо немає досвіду веб-програмування?

Налаштування редиректу – складне технічне завдання, для виконання якого не обійтися без профільних знань. Якщо ви не маєте навичок розробки та програмування, і у вас під рукою немає штатного програміста, можна скористатися підтримкою хостинг-провайдерів. Багато хто з них пропонує послугу web-форвардингу (або «переадресація домену», «URL-форвардинг» тощо). Вона дозволяє налаштувати переадресацію з однієї URL-адреси на іншу. При цьому використовується 301 редирект.

Інший варіант – для популярних CMS. Так, для WordPress є плагіни Redirection, Safe Redirect Manager, Simple 301 Redirects, а Joomla! та є вбудовані інструменти редиректу.

Чи не впевнені, що зможете правильно налаштувати редиректи своїми руками? Краще не ризикувати – у системи PromoPult за вас все зроблять професійні вебмайстри.

Висновок

Найкращий спосіб налаштувати 301 редирект - за допомогою. htaccess. Але він підходить лише для веб-серверів Apache. Для IIS доведеться настроювати web.config. Якщо потрібно не просто зробити редирект, а врахувати певні умови, то використовуйте PHP, але в цьому випадку без допомоги програміста не обійтися.

Є й інші способи (зокрема, за допомогою HTML та JavaScript), але це не 301 редирект, а просто перенаправлення без передачі ваги. Також можна використовувати плагіни для популярних CMS або підключити послугу web-форвардингу, якщо її надає ваш хостинг-провайдер.

Редирект – це спосіб переадресації користувачів та пошукових роботів на URL-адресу, яка відрізняється від спочатку запитаної. Існує кілька видів переадресації, деякі з яких наведені нижче.

301 Moved Permanently

301 - постійний редирект, який вказує на те, що сторінка, що запитується, знаходиться за новою адресою, а старий потрібно вважати застарілим. Такий вид редиректу передає 90-99% маси посилань на новий URL.

Канонізація або склеювання домену

Для склеювання домену з www на без www:

RewriteCond %(HTTP_HOST) ^www.site\.com$ RewriteRule ^(.*)$ http://site.com/$1

Для склеювання домену з без www на с www:

RewriteCond %(HTTP_HOST) ^site\.com$ RewriteRule ^(.*)$ http://www.site.com/$1

Для правильного вибору методу склеювання потрібно розглянути такі фактори:

  • Який варіант вищий індексація;
  • Який варіант вищий за позицію у видачі;
  • Канонізація слеша наприкінці адреси.

Під час створення проекту сайту потрібно вирішити, чи використовувати слеш наприкінці адреси. Для пошукових систем адреси виду:

  • http://www.site.com/category1
  • http://www.site.com/category1/

Є різними URL-адресами. Тому коли вирішите, який вид будуть адреси у вас на сайті, потрібно прописати такий код для того, щоб прибрати слеш наприкінці:

RewriteCond %(HTTP_HOST) (.*) RewriteCond %(REQUEST_URI) /$ RewriteRule ^(.*)(/)$ $1

або такий, щоб додати його:

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*[^/])$ $1/

Для редиректу 301 однієї сторінки на іншу:

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Щоб переконатися, що при запиті будь-якої версії головної сторінки, наприклад: default.htmабо index.html, буде зроблено редирект на канонічній сторінці http://www.site.com , потрібно прописувати наступний код редиректу:

RewriteCond %(THE_REQUEST) ^(3,9)\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ RewriteRule ^(([^/]+ /)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1

Редирект каталогу

Якщо в адресі відображається структура каталогу, то при змінах у вас буде змінювати і адресу. Тому потрібно прописувати такий редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

Але буває так, що адреса старого каталогу відображається одразу після доменного імені, наприклад www.site.com/old-catalog/. У цьому випадку використовується такий код:

RewriteRule old-catalog /(.*) / old-catalog /$1

Редирект при зміні розширення файлів

При зміні CMS зазвичай змінюється лише розширення файлів. Для канонізації сторінок у цьому випадку потрібно використовувати код:

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Редирект з появою кількох слешей чи тире

за різних причинбуває, що на адресі з'являються зайві слеші або тире, наприклад www.site.com/catalog////page-1.html . Такі сторінки потрібно переадресовувати на адреси з одним слешем.

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

Так само забираються і зайві тире в адресі, наприклад зміна www.site.com/catalog/page-1.html на www.site.com/catalog/page-1.html .

RewriteCond %(REQUEST_URI) ^(.*)-(.*)$ RewriteRule . %1-%2

.htaccess - зайві слеші після імені домену

  • http://site.com//////catalog

Щоб усунути ці слеши те щоб перенаправлення на сторінку без слешей, тобто.

  • http://site.com/catalog

Потрібно прописати:

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

Генерація 301 редиректів

Якщо технічних знань для написання власного коду не вистачає, то є спеціальні послуги генерації всіх основних редиректів:

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

Як перевірити 301 редирект?

Після внесення будь-яких змін до логічної частини редиректу потрібно перевіряти його працездатність. Для мануальної перевірки потрібно:

  • Перевірити чи працює сайт зайти на його головну сторінку;
  • Поблукати сайтом, його розділами та окремими сторінками.

Але є й послуги для автоматичної перевірки редиректу:

  • http://bertal.ru - дуже докладні дані про всі відгуки сервера

Правила використання 301 ред.

Пошукова система Googleвстановлює чіткі правила, тільки при дотриманні яких вона правильно трактуватиме ваші дії. Ось як буквально розуміють пошукові системи 301 і Canonical:

  • - Ця сторінка є застарілою, нова сторінка знаходиться за адресою такої-то. Прошу видалити стару сторінку з індексу, а нову проіндексувати та повністю передати на неї всю вагу старої.
  • Canonical – окрім цієї версії сторінки маю ще й інші. Але ти, будь ласка, індексуй тільки ту, де стоїть Canonical. Інші версії будуть лежати для того, щоб їх могли переглядати люди, але тобі не включати їх в індекс. Усю вагу варто передавати саме на сторінку з Canonical.

Уподобання щодо використання редиректу 301

Зазвичай, це найкращий метод:

  • Для окремих сторінок – якщо назавжди змінилася її адреса;
  • Для доменів – якщо сайт буде постійно на новому домені;
  • Для сторінок 404 та сторінок з контентом, який більше не є актуальним. Наприклад, при видаленні товару з каталогу можна зробити редирект на схожий за функціями товар або сторінку каталогу з цим типом товарів.

Коли краще не використовувати редирект 301

  • Якщо їхня реалізація неможлива або вона займе невиправдано багато часу.
  • Якщо контент дублюється на двох сторінках, але обидві вони мають бути доступні користувачеві через деякі відмінності (наприклад, розмір одягу).
  • Якщо одна сторінка має кілька URL (сортування каталогу за різними критеріями).
  • Для крос-доменів, коли контент на двох адресах може дублюватися, але він має бути на кожному домені.

Сподобався піст? Натисніть на кнопочки →

Редирект 301 або 301 Permanent Redirect — це правило, яке автоматично переадресовує користувача на іншу адресу сторінки. З його допомогою ви можете склеїти старі сторінки з новими або перенести сайт на інший домен, прибрати багато дублів із сайту та багато іншого. Вкрай корисна річ – тому треба навчитися робити його правильно!

Також при 301 редиректі відбувається склеювання ТІЦ (читаємо) і PR - тобто. Ви можете зберегти старе значення на новій адресі. Ви можете анітрохи не втратити в очах пошукових систем. Давайте перейдемо від теорії до практики.

Як налаштувати 301 редирект в htaccess

Файл під назвою htaccess знаходиться в головній категорії вашого сайту. Це службовий файл, де ми будемо вказувати правила склеювання. Відкриваємо файл блокнотом (рекомендую notepad++, щоб не було проблем із кодуванням). Не забувайте, що це один із важливих пунктів у .

Загальний шаблон для .htaccess, яким ми користуватимемося:

Options +FollowSymLinks RewriteEngine On #Тут вказуємо правила

Усі правила записуються у вигляді:

RewriteCond [Порівняння] [Умова] [Прапори] RewriteCond [Порівняння] [Умова] [Прапори] RewriteRule [Шаблон] [Підстановка] [Прапори]

Тепер безпосередньо займемося переадресацією та розберемо конкретні приклади.

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

Приклади використання 301 редиректу Редирект з index.php на головну

Щоб налаштувати його, потрібно прописати у вашому файлі наступний код, який буде перенаправляти відвідувачів з адреси site.ru/index.php на site.ru:

RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP RewriteRule ^index\.php$ http://site.ru/

Якщо вам так само потрібно зробити переадресацію з index.html, то просто в коді вище замініть .php на .html

Склеюємо аліаси сайту

Якщо у вас кілька доменів і ви хочете їх перенаправляти на основний сайт, то використовуємо:

RewriteCond %(HTTP_HOST) ^vash-sait.com$ RewriteCond %(HTTP_HOST) ^www.vash-sait.com$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http://vash- sait.ru/$1

Зверніть увагу на перші 2 рядки, там вказано дзеркало у зоні.com, якщо у вас інша або кілька зон, то додаємо правила.

Редирект з www на без www

Цей спосіб я вже описував раніше, але повторюсь. Для того, щоб склеїти дзеркала та вибрати основним домен без www прописуємо:

RewriteCond %(HTTP_HOST) ^www.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1

Редирект з домену без www на домен з www

Ця дія протилежна попередньому, тільки основне дзеркало www.site.ru:

RewriteCond %(HTTP_HOST) ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

301 редирект сторінок зі слешем і без

Це ще один вид дублів, тут ми склеїмо сторінки site.ru/category/ і site.ru/category, як бачите, наприкінці другого урла не варто слеша:

RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ /$1

Якщо вам потрібно навпаки залишити слеш наприкінці урла, то вам потрібен цей варіант:

RewriteBase / RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*[^/])$ $1/

Якщо у вас з якоїсь причини з'явилися урли типу site.ru/category//article.html, то юзаєм код:

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

де, "//" можна замінити на "-" або будь-які здвоєні символи в урлі.

Масова заміна категорії

Буває, що ви перейменували категорію, а за нею закріплено тисячі урлів. Щоб не постаріє під час написання тисяч однакових перенаправлень юзаєм:

RewriteRule ^(.*)/old-category/(.*)$ $1/new-category/$2

RewriteRule old-category /(.*) / old-category /$1

Редирект на нову сторінку

Найпростіший редирект зі сторінки на сторінку, для цього просто пропишіть так:

Redirect 301 /old-post.html http://new-site.ru/new-post.html

Де old-post.html – це ваша стара сторінка, а new-site.ru/new-post.html – це нова сторінка і вона може бути на будь-якому домені (включаючи ваш поточний домен).

Редирект для url з параметрами

Сторінки з параметрами редигуються складніше, візьмемо приклад http://site.ru/page.php?sort=articles. Параметр тут sort=articles. Код буде наступним:

RewriteCond %(QUERY_STRING) sort=articles RewriteRule .* http://site.ru/page.php?

Працюємо з розширеннями

Забираємо.html з url (для видалення.php не забудьте замінити $1.html на $1.php):

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Меняем.php на.html в урлах і навпаки (не забуваємо поміняти місцями в коді):

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Правильний 301 редирект на новий домен

Цей пункт виділив окремо, т.к. він більше пов'язаний із перенесенням на інший домен. Тут є важливий момент, це не прогаяти директиву з правки роботса - вона вказана на 3 рядку коду.

RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 RewriteCond %(HTTP_HOST) ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1

За допомогою таких не хитрих махінацій ми позбудемося дублів сторінок, тим самим покращивши нашу внутрішню оптимізацію та відповідно якість сайту.

Якщо у вас виникли якісь питання, пишіть у коментарі — розбиратимемося 🙂

301 код помилки (Moved Permanently) означає, що ця сторінка або весь сайт переміщені на новий постійний URL назавжди. Використовується для передачі ваги. Обов'язково перевіряйте, який код помилки віддає сервер, коли налаштуєте даний редирект. Я використовую для цього, наприклад чудовий плагін Firebug для Firefox.

Налаштування 301 редиректів, якщо у Вас веб-сервер linux Apache відбувається у файлі.htaccess. А у разі windows веб-сервера IIS – це буде файл web.config.

301 редирект на різних CMS, таких як wordpress, бітрикс, друпал, dle, modx, joomla, opencart та інших, налаштовується за допомогою спеціальних плагінів, а також звичайним способом через htaccess або web config.

Основні оператори регулярних виразів

Перед тим, як налаштовувати правильні 301 редирект у файлі.htaccess потрібно чітко розрізняти основні оператори регулярних виразів (спецсимволи, модифікатори, прапори):

спецсимволи:

  • ^ - обмеження зліва (початок рядка);
  • $ - обмеження праворуч (кінець рядка);
  • . - Будь-який символ;
  • () - Змінна;
  • \ - екранування (символ після \ вважається звичайним, а не спецсимволом);
  • - Діапазон значень;
  • ! - Спецсимвол заперечення;

модифікатори:

  • ? символ повторюється 0 або 1 раз;
  • + - 1 і більше символів (до 65536);
  • * - 0 і більше символів (до 65536);
Налаштування 301 редиректів у файлах htaccess та web.config

Я публікую тут лише перевірені та технічно закінчені робочі варіанти 301 редиректів. База робочих варіантів 301 редиректів поповнюватиметься.
Редирект зі старої статичної (ЧПУ) сторінки на нову сторінку:

RewriteEngine On RewriteCond %(HTTP_HOST) ^www\.seowind\.ru$ RewriteRule ^baza-znanij-seo/nastrojka-301-redirekta/$ https://www.сайт/newpage/

Редирект на головну сторінку:

RewriteEngine On RewriteCond %(HTTP_HOST) ^www\.seowind\.ru$ RewriteRule ^baza-znanij-seo/nastrojka-301-redirekta/$ https://www.сайт/

Редирект з головною на внутрішню сторінку:

RewriteEngine On RewriteCond %(HTTP_HOST) ^www\.seowind\.ru$ RewriteRule ^$ https://www.сайт/baza-znanij-seo/nastrojka-301-redirekta/

Редирект зі сторінок сайту з WWW на сторінки без WWW:

RewriteEngine On RewriteCond %(HTTP_HOST) ^www\.seowind\.ru$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http://сайт/$1

Редирект зі сторінок сайту без WWW на сторінці з WWW:

RewriteEngine On RewriteCond %(HTTP_HOST) ^seowind\.ru$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ https://www.сайт/$1

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

Редирект 301 зі сторінок зі слішем на кінці на сторінки без нього:

RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ /$1

А тут додаємо сліш у кінець урла:

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*[^/])$ $1/

301 редирект з index.php на головну:

RewriteEngine On RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://www.сайт/

Редирект усіх внутрішніх сторінок на головну:

RewriteEngine On RewriteCond %(ENV:REDIRECT_STATUS) ^$ RewriteRule !(^$|.*\.(css|jpg|gif)) /

Редирект урла з параметром на будь-яку внутрішню сторінку сайту: (Наприклад, зі сторінки http://www.site.ru/news.php?category=1 на http://www.site.ru/news.php?category=2 (Тут параметр category =)):

RewriteEngine On RewriteCond %(QUERY_STRING) category=1 RewriteRule ^news.php http://www.site.ru/news.php?category=2

Редирект урла з параметром на головну сторінку сайту: (Наприклад, http://site.ru/index.php?show_section=12 на головну сторінку http://site.ru/ (тут параметр show_section=12)):

RewriteEngine On RewriteCond %(QUERY_STRING) show_section=12 RewriteRule ^index.php http://site.ru/?

Редирект зі старого домену на новий (прописуємо в htaccess старого сайту):

RewriteEngine on RewriteCond %(HTTP_HOST) ^www\.siteold\.ru$ RewriteRule ^(.*)$ http://sitenew.ru/$1 RewriteCond %(HTTP_HOST) ^siteold\.ru$ RewriteRule ^(.*)$ http://sitenew.ru/$1

Редирект з домену РФ на домен RU. Тут важливо знати, що РФ зона перетворюється на.

RewriteCond %(HTTP_HOST) ^xn-...\.xn--p1ai$ RewriteRule ^(.*)$ https://www.сайт/$1

301 редирект каталогу:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

Ви напевно у своїй практиці зустрічали випадок, коли є 2 сайти з однаковою інформацією, але в той же час доступні на різні адреси (сайти дублі). Ці сайти мають однаковий robots.txt, sitemap.xml і один на двох.htaccess. Пропоную варіант 301 редиректа з неосновного сайту (site2) на основний (site1):

RewriteEngine On RewriteCond %(HTTP_HOST) ^site2.ru$ RewriteCond %(HTTP_HOST) ^www.site2.ru$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http://www.site ru/$1

Вставка включає в себе всі редиректи зі сторінок index|default з розширеннями htm|html|php|asp|aspx на головну:

RewriteEngine On RewriteCond %(THE_REQUEST) ^GET\ .*/(index|default)\. |php|asp|aspx)$ http://www.site.ru/$1

Часто у веб-розробці потрібно робити переадресації з однієї сторінки (наприклад, застарілої) на іншу. При цьому переадресація може виконуватись різними методами - як із втратою ваги сторінки, так і без неї. Але про це докладніше.

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

Переадресацію сторінок можна робити різними способами. Розглянемо основні.

301 редирект через.htaccess

У корені вашого сайту є файл (якщо його немає – створіть) під назвою.htaccess. Відкрийте його на редагування та використовуйте один із таких способів.

Redirect permanent та Redirect 301 - легко робить 301 редирект з однієї сторінки на іншу (або сайту). Першою йде стара посилання сайту (зауважте - без домену), другий - посилання на нову сторінку (яка може бути цим же сайтом або взагалі новим).

Приклади:
Redirect permanent /staraya-stranica.php http://newsait.ru/novaya-stranica.php
(тут просто переадресуємо зі застарілої сторінки на нову)

Redirect 301 / http://newsait.ru/
(тут / означає, що всі починаючи з головної сторінки сайту та всіх його підсторінок (піддиректорій) буде переадресовуватися на новий домен; тобто фактично переадресація з цього домену на інший.)

RewriteRule редирект - складніший редирект, ніж попередні варіанти. Потребує правильної роботи підключення модуля mod_rewrite на хостингу (зазвичай завжди включений). Часто цей метод використовують для переадресації сторінок з www на такі самі без www і назад. Розглянемо їх:

Редирект домену з www на не-www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %(HTTP_HOST) ^www\.(.*)
RewriteRule ^(.*)$ http://%1/$1

Редирект з не-www на домен з www
RewriteEngine On
RewriteCond %(HTTP_HOST) !^www\.(.*)
RewriteRule ^(.*)$ http://www.%1/$1

301 редирект з домену на домен і винятком посилання /market/vm2_market.xml. Тобто. всі запити (крім /market/vm2_market.xml), зі старого домену на новий будуть виконуватися.

RewriteEngine on

301 Усі запити (крім /market/vm2_market.xml та посилання /texts (і всіма її "посиланнями")), зі старого домену на новий будуть виконуватися. Також тут працює правило переадресації певного посилання (RedirectMatch 301)

RewriteEngine on
RedirectMatch 301 ^/texts/data/msg/(.*)\.png$ http://olddomen.ru/texts/data/rimage/msg.php?id=$1
RewriteCond %(REQUEST_URI) !^/texts*
RewriteCond %(REQUEST_URI) !^/market/vm2_market.xml$
RewriteRule ^(.*)$ http://newdomen.ru/$1

RedirectMatch 301 – ще один хороший метод редиректу, він схожий на Redirect 301, але має більший функціонал. А саме, за його допомогою можна робити редиректи на основі регулярних виразів.

Приклади:
RedirectMatch 301 ^/olddirectory/ http://сайт/newdirectory/
(Тут переадресує всю директорію на нову)

RedirectMatch 301 ^(.*)$ http://сайт
(Переадресує всі сторінки зі старого домену на новий за допомогою 301 редиректа (вага також передається на новий сайт))

RedirectMatch 301 (.*)\..php
(Зміна сторінок з html розширення на php розширення)

RedirectMatch 301 /dirA/(.*)\..php
(Запускає перенаправлення з директорії dirA на директорію dirB тільки при зверненні до PHP скриптів.
.php -> http://сайт/dirB/page.php - спрацює
http://сайт/dirB/page.html - не спрацює)

Синтаксис для регулярних виразів
. - Крапка замінює довільний символ.
- позначає перелік символів, що збігаються з літерами a, b або с.
[^abc] - перелік символів, які не входять до зазначеного діапазону. Збігається з будь-яким символом, окрім a, b, або с.
* - означає, що попередній символ може повторюватись (0 або більше разів).
* - команда знайде символи, що йдуть поспіль, із заданого набору.
[^abc]* - з точністю навпаки.

.* - замінює будь-який набір символів. ".*" - знайде всі підрядки між лапками.
^ - початок рядка (у тому випадку, якщо використовується на початку виразу).
$ - позначає кінець рядка.

\w - буква, цифра або підкреслення _.
d - замінює будь-яку цифру.
\D - замінює будь-який символ, але не цифру.
- Замінює будь-яку цифру.
- будь-яка літера від a до z (весь латинський набір символів) у нижньому регістрі.
- будь-яка літера від A до Z у верхньому регістрі.
- Будь-яка буква від a до Z у будь-якому регістрі.
- Те саме.

Спецсимволи, що використовуються у правилах та їх значення.
^ - Спецсимвол початку рядка;
$ - спецсимвол кінця рядка;
! - Спецсимвол заперечення;
. - точка, що замінює будь-який символ, але тільки один;
() - угруповання;
\ - «екрануючий» слєш, наступний символ після нього вважається звичайним, а не спецсимволом.

Модифікатори використовуються після звичайних спецсимволів або їх груп і дозволяють розширити можливості шаблонів для спрацьовування правил.
? - Символ повторюється 0 або 1 раз.
+ - повторюється від 1 до 65 536 разів.
* - повторюється від 0 до 65 536 разів.

Прапори, задають дод. опції для використовуваного правила. Перераховуються в квадратних дужках через кому, скажімо або .
NC - прапор NoCase, що вимикає перевірку регістру символів під час спрацьовування правила.
R - прапор Redirect, здійснює процес зупинення зміни URL-адреси і повертає результат. Найчастіше використовується значення R=301, але можливі інші для тимчасових перенаправлень (302, MOVED TEMPORARY).
L - прапор Last, зупиняє формування URL-адреси і рядок вважається остаточним.

Редирект через php. Якщо у вас звичайна php сторінка, яку треба переадресувати на нову адресу, можна обійтися без.htaccess

Приклад:

Редирект через JavaScript. Також переадресацію можна зробити і на звичайному JavaScript (правда без передачі ваги сторінки).

Приклад:
window.location="http://сайт/category/";
(звичайна переадресація на сторінку сайту)
alert("Зараз ви будете переадресовані!"); window.location="http://сайт/category/";
(звичайна переадресація на сторінку сайту, перед якою користувачеві виводиться повідомлення)

Розповісти друзям