301 Перенаправление пользовательской иерархии URL-адресов в WordPress

Я конвертирую пользовательский сайт в сайт WordPress. К сожалению, пользовательский сайт имеет совершенно другую структуру URL, для которой мы хотели бы настроить 301 переадресацию. Сайт получает до 300 тыс. Уникальных посетителей в месяц, поэтому мы хотим минимизировать потерю трафика – особенно статьи, связанные с основными новостными сайтами по всему миру.

Итак, пример URL-адреса выглядит следующим образом:

.com/front/news/view.asp?cate=A06&subcate=D006&cNewsArti=201403402 

В общей сложности около 30 категорий (включая родителей и детей), но около 11 000 статей.

Я думал, что мы можем использовать значения cNewsArti как «post_slug», которые легко импортируются в WP. Однако это оставалось бы сложным в оставшейся части строки, так как мы, скорее всего, будем использовать следующую постоянную ссылку WP:

 /%category%/%postname%/ 

Мои мысли таковы:

 .com/categoryname/subcatname/201403402 

Итак, как я мог сделать остальную часть перенаправления? Как вы можете понять, создание пользовательских 301-х для 11 000 статей, вероятно, выходит за рамки уравнения.

Есть идеи?

Заранее спасибо!

Изменить: – данные уже были импортированы в базу данных WordPress, все из которых работает нормально – мы назначили все сообщения в кучу случайных категорий, чтобы гарантировать, что все работает в WordPress, как ожидалось, никаких проблем не обнаружено.

Solutions Collecting From Web of "301 Перенаправление пользовательской иерархии URL-адресов в WordPress"

Один из вариантов – добавить правила перезаписи URL .

Создание конечной точки API в WordPress – хороший учебник, а также API-интерфейс Rewrite: The Basics .

Monkeyman Rewrite Analyzer – отличный способ проверить, что вы создали. Просто обязательно промойте свои постоянные ссылки после каждого изменения.

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

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

Вместо того, чтобы использовать какие-либо старые данные в новой структуре URL, я бы вместо этого сохранил старое значение cNewsArti в post meta для каждого сообщения, чтобы вы могли посмотреть эти сообщения на это значение.

Затем вы можете подключить init , проверить, cNewsArti ли cNewsArti , и запросить сообщение с этим сопоставимым значением в метаданных сообщения. Если сообщение найдено, сделайте 301 перенаправление на его новую постоянную ссылку.

 function wpd209890_old_url_redirect(){ if( isset( $_GET['cNewsArti'] ) ){ $query = new WP_Query( array( 'meta_query' => array( array( 'key' => 'cNewsArti', 'value' => $_GET['cNewsArti'] ) ) ) ); if( isset( $query->post ) ){ wp_redirect( get_permalink( $query->post->ID ), 301 ); exit; } } } add_action( 'init', 'wpd209890_old_url_redirect' ); 

Мне нравятся предложения. Однако я думал о другой проблеме, что означает, что нам, вероятно, придется использовать значения cNewsArti в качестве значения post_name – сайт находится на корейском языке. Почтовые заголовки, выдержки и содержание – все корейские. Поэтому я не думаю, что мы сможем использовать корейские названия статей для имени почты – .com / 범주 / 하위 카테고리 / 포스트 – 이름, вероятно, вызовет проблемы, не так ли?