Wordpress где хранятся редиректы
Перейти к содержимому

WordPress где хранятся редиректы

  • автор:

При изменении адреса страницы, WordPress сохраняет старый адрес и делает с него редирект на новый

Собственно, в этом и вся суть, что, если вы измените постоянную ссылку записи, то WordPress сохранит старый url и создаст 301 редирект со старого на новый url.

Вот по этой ссылке я нашел немного информации по этому поводу — link.

Ниже мой вольный перевод сообщений из топика по ссылке выше.

Вопрос от mikkelbreum

Я только что изменил URl одного из своих постов с
http://site.org/session/theme-frameworks-trends-og-standardisering/
на
http://site.org/session/wordpress-themes-mere-end-design/

И сейчас при при переходе по старому URl, меня редиректит на новый. Это, конечно круто! Но это фича WordPress или баг?

Отслеживает ли WP историю URL-адресов, создавая редиректы для старых адресов? Глядя на заголовки ответов, я вижу, что WP использует SEO friendly 301 редирект. Я думал, что мне придется настроить редиректы в своем файле htaccess, поэтому мне интересно знать, как так происходит, что WP сам создает редиректы со старых урлов на новые.

Буду благодарен за любую информацию, о том, как WP это делает.

Ответ от Johannes Pille

Отслеживает ли WP историю URL-адресов, создавая редиректы для старых адресов?

Да, отслеживает. Если вы измените slug записи, WordPress создаст 301 редирект со старого адреса на новый (если сервер позволяет).

Буду благодарен за любую информацию, о том, как WP это делает.

К сожалению, не видел эту функцию должным образом задокументированную в Кодексе, поэтому не могу сказать, какие функции в ядре WP содержат ее и где в ядре она расположена.

Что я могу сказать: предыдущие версии используемых урлов расположены в базе данных в таблице wp_postmeta . Посмотрите _wp_old_slug в колонке meta_key , значение урла будет храниться в колонке meta_value . И если вы не хотите получать редирект при переходе по старой ссылке, то просто удалите значение в колонке meta_value .

Ситуации, когда эта фича WP может оказаться багом — это, когда вы изменили урл записи А или переименовали саму запись А, а потом создаете запись Б с таким же названием какое было ранее у записи А, и тогда при переходе по ссылке записи Б, вас будет редиректить на запись А, потому что в базе данных сохранился редирект старого урла А, который сейчас совпадает с урлом Б, на урл А, если вы понимаете о чем я.

Задача такая — сделать открытие картинок из карусели Owl-Carousel в pop-up окне по типу light…

Если не загружаются автоматически демо-данные для шаблона Avada нужно увеличить WP Memory Limit и прописать…

Добавляем к товару новый таб ‘Основной ингредиент’ Данный код добавляем в файл functions.php: *** Чтобы…

Как сделать скачивание pdf-файла после отправки формы с помощью плагина Contact Form 7. Открываем pdf-файл…

Где хранятся редиректы категорий в wordpress?

В общем, я поменял slug категории в вордпресс, вследствие чего, почему-то, некоторые страницы не перенаправляются на новые.
Сайт переносился с юкоза и там редиректов куча всяких и много уже не работает.
Если поменять сейчас slug на старый, то опять же многие страницы становятся недоступны.
В общем хочу вернуть, как было. Есть дамп базы, когда еще не менял slug. Но за это время появилось много новых постов и комментариев. Может можно заменить какие-то таблицы в базе или что-нибудь еще, чтобы все встало на свои места.

  • Вопрос задан более трёх лет назад
  • 289 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 1

dimasmagadan

Дмитрий @dimasmagadan

select * from wp_options WHERE option_name = ‘rewrite_rules’

Ответ написан более трёх лет назад

khodos_dmitry @khodos_dmitry Автор вопроса

Почему то в старом и новом дампе базы это значение одинаковое.

Ваш ответ на вопрос

Войдите, чтобы написать ответ

wordpress

  • WordPress

Contact form 7 — Как отправить Да, если чекбокс выбран и Нет, если чекбокс не выбран?

  • 1 подписчик
  • 18 часов назад
  • 18 просмотров

Как найти перенаправление (редиректы) в WordPress

Порой при дебаге сложно отследить (отловить, найти) какой участок кода создаёт перенаправления в WordPress (сложно поймать редирект). Но если такие редиректы делаются функциями WordPress: wp_redirect() или wp_safe_redirect() — решение есть!

Ниже показано как без труда вылавливать редиректы.

При включенном дебаге, используем код:

add_filter( 'wp_redirect', 'wp_redirect_print_debug_backtrace' ); function wp_redirect_print_debug_backtrace( $location ) < error_log( print_r( debug_backtrace( true ), true ) ); // или /* ob_start(); debug_print_backtrace(); $log = ob_get_clean(); error_log( $log ); */ return $location; >

Ознакомьтесь с возможностями функции debug_backtrace, чтобы изменить полноту предоставляемых данных.

Также можно использовать функцию debug_print_backtrace(), но она сразу выводит данные на экран, поэтому их надо «буферить», чтобы передать в error_log() .

Теперь попробуем, например, посетить страницу example.com/login/ , с которой движок перенаправит нас на страницу example.com/wp-login.php . В логе мы получим следующую информацию:

Array ( [0] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php [line] => 289 [function] => wp_redirect_print_debug_backtrace [args] => Array ( [0] => https://wp-test.ru/wp-login.php ) ) [1] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\plugin.php [line] => 206 [function] => apply_filters [class] => WP_Hook [type] => -> [args] => Array ( [0] => https://wp-test.ru/wp-login.php [1] => Array ( [0] => https://wp-test.ru/wp-login.php [1] => 302 ) ) ) [2] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\pluggable.php [line] => 1257 [function] => apply_filters [args] => Array ( [0] => wp_redirect [1] => https://wp-test.ru/wp-login.php [2] => 302 ) ) [3] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\canonical.php [line] => 971 [function] => wp_redirect [args] => Array ( [0] => https://wp-test.ru/wp-login.php ) ) [4] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php [line] => 287 [function] => wp_redirect_admin_locations [args] => Array ( [0] => ) ) [5] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\class-wp-hook.php [line] => 311 [function] => apply_filters [class] => WP_Hook [type] => -> [args] => Array ( [0] => [1] => Array ( [0] => ) ) ) [6] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\plugin.php [line] => 478 [function] => do_action [class] => WP_Hook [type] => -> [args] => Array ( [0] => Array ( [0] => ) ) ) [7] => Array ( [file] => F:\server\www\wp-test.ru\wp-includes\template-loader.php [line] => 13 [function] => do_action [args] => Array ( [0] => template_redirect ) ) [8] => Array ( [file] => F:\server\www\wp-test.ru\wp-blog-header.php [line] => 19 [args] => Array ( [0] => F:\server\www\wp-test.ru\wp-includes\template-loader.php ) [function] => require_once ) [9] => Array ( [file] => F:\server\www\wp-test.ru\index.php [line] => 17 [args] => Array ( [0] => F:\server\www\wp-test.ru\wp-blog-header.php ) [function] => require ) )

Благодаря этой отладочной информации, мы определили, что за перенаправление ответствен хук:

add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

Он навешивается в файле default-filters.php и запускает функцию wp_redirect_admin_locations(), которая и создает само перенаправление.

Эта заметка встроена в: wp_redirect

Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.

Как настроить редиректы в WordPress

Редирект — это перенаправление браузера с одной веб-страницы на другую. В этой статье мы расскажем чем могут быть полезны подобные перенаправления, и рассмотрим несколько вариантов настройки редиректов в WordPress.

Зачем нужны редиректы

Редиректы чаще всего используются при смене домена или адреса сайта. Это позволяет посетителям и поисковым роботам находить содержимое используя старые адреса, и не терять при этом все внешние ссылки указывающие на старый домен.

При смене формата постоянных ссылок (ЧПУ) в WordPress, тоже часто настраивают редиректы, хотя во многих случаях ядро WordPress может самостоятельно настроить внутренние перенаправления. Это также касается смены названия определенной статьи или страницы.

Редиректы также используются для создания упрощенных или укороченных версий некоторых более длинных адресов. Например на WP Magazine мы используем адрес wpmag.ru/subscribe для переадресации пользователей на форму подписки на рассылку MailChimp. Плюсом в таком подходе является то, что при смене провайдера почтовых рассылок, нам нужно будет изменить адрес лишь в одном месте.

Типы редиректов

Существует два основных типа редиректов — постоянный (301) и временный (302, или иногда 307). Числа в скобках это коды, используемые в протоколе HTTP при перенаправлении.

Проверка редиректа в Google Chrome

Проверка редиректа в Google Chrome

Чтобы узнать, какой тип редиректа используется в конкретном случае, можно воспользоваться вкладкой Network/Сеть в панели для разработчиков браузера Chrome или Firefox, и просмотреть заголовки передаваемые веб-сервером.

Учтите, что постоянный редирект не означает, что его нельзя будет в будущем изменить. Постоянные редиректы запоминаются браузерами и поисковыми системами на более долгий срок, чем временные редиректы.

Редирект с помощью плагина в WordPress

Самым популярным плагином для работы с редиректами в WordPress является Redirection. Данный плагин насчитывает более двух миллионов скачиваний и полностью совместим с последней версией WordPress.

Плагин Redirection позволяет создавать неограниченное количество редиректов, просматривать статистику по перенаправлениям, а также отслеживать ошибки 404 (не найдено) на сайте WordPress. Redirection также поддерживает регулярные выражения.

В качестве альтернативы можно рассмотреть более новый плагин Safe Redirect Manager от разработчиков из компании 10up. Данный плагин имеет более приятный пользовательский интерфейс, поддерживает регулярные выражения и полностью поддерживает режим Multisite.

Плагин Simple Redirect Manager

Плагин Simple Redirect Manager

Следует также упомянуть плагин Simple 301 Redirects, который является более простым решением для перенаправлений в WordPress. Именно данный плагин мы используем на сайте WP Magazine.

Плагин Simple 301 Redirects

Плагин Simple 301 Redirects

Редирект с помощью .htaccess

Если ваш хостинг-провайдер использует веб-сервер Apache, то вам наверняка предоставлен доступ к дополнительному файлу конфигурации .htaccess, в котором можно настроить редиректы, например:

Redirect 301 /subscribe http://example.org/path/to/subscribe

А с помощью директивы RedirectMatch в файле .htaccess можно настроить редиректы с использованием регулярных выражений:

RedirectMatch ^/foo/(.*)$ http://example.org/bar/$1

Если на вашем сервере используется nginx, то редиректы можно настроить в файле конфигурации веб-сервера с помощью директивы rewrite в контексте server . Учтите, что если вы используете shared-хостинг, прямого доступа к файлам конфигурации nginx у вас скорее всего не будет, но большинство хостинг-провайдеров позволяют добавить перенаправления через специальный интерфейс, или с помощью службы технической поддержки.

rewrite ^/foo/(.*)$ http://example.org/bar/$1 permanent;

Плюсом данных методов является то, что редиректы обрабатываются еще до запуска обработчика .php файлов и WordPress, поэтому такие редиректы как правило создают меньше нагрузки на сервер, хотя при грамотном кэшировании HTTP запросов в WordPress, это не имеет значения.

Использование wp_redirect() и wp_safe_redirect()

В WordPress есть две встроенные функции для редиректов: wp_redirect() и wp_safe_redirect() .

Данные функции отличаются только тем, что wp_safe_redirect() проверяет адрес и сравнивает его со списком «разрешенных» хостов. Этим списком можно управлять с помощью специального фильтра allowed_redirect_hosts .

Вторым аргументом к функциям можно указать тип редиректа, например 301 или 302. Использовать эти функции можно в собственном плагине, что может быть легкой альтернативой выше-упомянутым плагинам, особенно для опытных разработчиков WordPress:

add_action( 'template_redirect', function() < if ( preg_match( '#^/subscribe/?$#i', $_SERVER['REQUEST_URI'] ) ) < wp_redirect( 'http://example.org/path/to/subscribe', 301 ); exit; >> );

Заключение

В заключение стоит отметить, что редиректы это первое, что чаще всего теряется при переезде сайта от одного хостинг-провайдера к другому. Поэтому все редиректы лучше хранить в одном месте.

Также советуем использовать инструменты для веб-мастеров от поисковых систем Google и Яндекс. Они покажут вам несуществующие страницы на вашем сайте, на которые ссылаются другие страницы. Подобное поведение часто является результатом потерянных редиректов или опечаток в адресах.

Константин Ковшенин 23.01.2015 23.01.2015

Сооснователь журнала WP Magazine и первой конференции WordCamp в России. Работал в Automattic, WordPress.com, WooCommerce. Принимает активное участие в развитии ядра WordPress. Любимый язык программирования: Python.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

Читайте также

Вебинары на WordPress.com

Вебинары на WordPress.com

Как добавить заголовок Sender в wp_mail()

Contributor Day после WordCamp SF 2013

WordPress Meetup в Санкт-Петербурге пройдет 14 октября

Локальный сервер для WordPress за 5 минут с VVV, VirtualBox и Vagrant

Раз в неделю, только все самое новое про WordPress и никакого спама!

Поиск по сайту

Бесплатная книга

Как защитить свой сайт от хакеров? Читайте в нашей электронной книге.

Mailbob – это отличный инструмент для создания электронных рассылок. Невероятно простой интерфейс, удобный редактор, адекватная цена.

О проекте

  • О проекте
  • Стать автором
  • Реклама на сайте
  • Планета WordPress
  • Разместить вакансию
  • Связаться с нами

Рекомендуем

  • Журнальная тема от WP Magazine
  • Безопасность WordPress (книга)
  • Премиум темы WordPress
  • Хостинг WordPress

© 2024 Копирование материалов без разрешения автора запрещено. WordPress и WordCamp являются зарегистрированными торговыми марками и принадлежат фонду WordPress Foundation. Читайте правила использования торговых марок. Работает на WordPress, хостится на DigitalOcean через Sail.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *