Статьи

Перенаправление старых URL в WordPress

Недавно мы разработали систему для перенаправления старых URL-адресов в PHP, чтобы вы могли избежать ошибок «страница не найдена» (я предлагаю вам прочитать ее, прежде чем углубляться). В этой статье мы создадим аналогичную систему для WordPress, популярной PHP CMS .

Чем отличается WordPress?

WordPress направляет все запросы через один файл index.php . В обычных условиях все URL-адреса, которые не отображаются на физический файл или папку на вашем сервере, будут обрабатываться WordPress. Это включает в себя все недействительные адреса, поэтому нет необходимости настраивать документ об ошибке 404 в Apache или IIS.

Вероятно, нет необходимости беспокоиться о перенаправлении старых URL-адресов, если вы используете WordPress с самого первого дня. Система достаточно хороша в поиске нужной страницы, даже если вы изменили структуру постоянных ссылок (Настройки> Постоянные ссылки). Однако, если вы переносите контент со статического сайта или другой CMS, вы почти наверняка будете иметь несоответствия URL.

Обновление темы

Мы собираемся обработать перенаправления в вашей теме WordPress. Вы можете создать плагин, но:

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

Сначала найдите файлы вашей темы в wp-content/themes/ my-theme-name . Многие темы предоставляют файл 404.php для обработки ошибок «страница не найдена», но вы можете создать 404.php при необходимости; например:

 <?php get_header(); ?> <h1>Page not found</h1> <p>Sorry, we cannot find that page.</p> <p>Please browse the sitemap&hellip;</p> <ul id="sitemap"> <?php wp_list_pages('title_li='); ?> </ul> <?php get_footer(); ?> 

Теперь вы должны включить redirect.php вверху файла 404.php , например:

 <?php include('redirect.php'); ?> <?php get_header(); // etc... 

(Обратите внимание, что более ранние версии WordPress могут потребовать: include(TEMPLATEPATH.'/redirect.php'); Redirect.php include(TEMPLATEPATH.'/redirect.php'); будет работать и в последних версиях.)

Теперь создайте файл redirect.php в папке вашей темы и добавьте следующий код:

 <?php // current address $oldurl = strtolower($_SERVER['REQUEST_URI']); // new redirect address $newurl = ''; // old to new URL map (for you to configure) $redir = array( 'index.html' => '/', 'article1.html' => '/blogs/my-first-article', 'article2.html' => '/blogs/my-second-article' ); while ((list($old, $new) = each($redir)) && !$newurl) { if (strpos($oldurl, $old) !== false) $newurl = $new; } // redirect if ($newurl != '') { header('HTTP/1.1 301 Moved Permanently'); header("Location: $newurl"); exit(); } ?> 

При $redir можно настроить массив сопоставления URL-адресов $redir . В качестве альтернативы вы можете использовать серию замен регулярных выражений или поиск в таблице базы данных, чтобы найти действительный $newurl .

Я надеюсь, что это помогает с вашими проблемами WordPress URL. Если у вас есть другие советы по управлению перенаправлениями, оставьте свои комментарии ниже.