2016-07-08 3 views
2

Wordpress ПеренаправлениеHtaccess переадресацией - сотни сообщений

Мой клиент имеет веб-сайт WP с очень плохой структурой Permalinks и несколько сотен «продукт» страницы, которые они создали, как простые сообщения с кучей HTML. Например:

http://www.website.com/article/sony-tv-42-inch 
http://www.website.com/article/iphone-5-2-black 
http://www.website.com/article/samsung-dvd-player-12455 

я создаю новый сайт с нуля и планирования использования пользовательских типов почтовых для раздела Продукты и организовать URLS как:

http://www.website.com/product/sony/tv-42-inch 
http://www.website.com/product/apple/iphone-5-black 
http://www.website.com/product/samsung/dvd-player-12455 

Поскольку он не хочет потерять трафик или Рейтинги SEO, мне было интересно, что будет самым простым решением для перенаправления htaccess для нескольких сотен сообщений? Если у него было только дюжина из них, я мог бы сделать это вручную, но несколько сотен ... Кроме того, не забывайте, что это чистая WP-установка с темой, построенной с нуля (я работаю локально и, скорее всего, буду импортировать продукты через файл CSV), поэтому я не могу просто изменить структуру постоянных ссылок на веб-сайте производства.

Любая помощь будет оценена

ответ

-1

для SEO, я предлагаю вам использовать 301 - перенаправить в ваш .htaccess

Вы можете использовать регулярное выражение для редиректа.

Пример:

RewriteEngine on 
RewriteRule ^/users/(.*)$ http://www.example.com/profiles/$1 [R=301,L] 
0

Было бы довольно легко для вас, чтобы переписать из

http://www.website.com/product/sony-tv-42-inch 

в

http://www.website.com/product/sony-tv-42-inch 

, но что дополнительные/собирается представить проблема.

Как уже упоминалось некоторыми другими, вы наверняка хотите 301 для целей SEO, поэтому вот что я хотел бы сделать.

Шаг 1 - Получить текущий URLS:

Получить список всех существующих почтовых постоянных ссылок. Этот SQL-запрос для MySQL на David George должен сделать трюк.

SELECT wpp.post_title, 
     wpp.guid, 
     wpp.post_date, 
     CONCAT 
     (
      wpo_su.option_value, 
      REPLACE 
      (
      REPLACE 
      (
       REPLACE 
       (
       REPLACE 
       (
        wpo.option_value, 
        '%year%', 
        date_format(wpp.post_date,'%Y') 
       ), 
       '%monthnum%', 
       date_format(wpp.post_date, '%m') 
      ), 
       '%day%', 
       date_format(wpp.post_date, '%d') 
      ), 
      '%postname%', 
      wpp.post_name 
     ) 
     ) AS permalink 
    FROM wp_posts wpp 
    JOIN wp_options wpo 
    ON wpo.option_name = 'permalink_structure' 
    AND wpo.blog_id = 0 
    JOIN wp_options wpo_su 
    ON wpo_su.option_name = 'siteurl' 
    AND wpo_su.blog_id = wpo.blog_id 
WHERE wpp.post_type = 'post' 
    AND wpp.post_status = 'publish' 
ORDER BY wpp.post_date DESC 

Шаг 2 - сохранить его для последующего использования: Теперь, когда у вас есть этот список дамп в столбец Excel для последующего использования.

Шаг 3 - Отформатируйте его для PHP: Возьмите все URL-адреса и выгрузите их в блокнот ++ или аналогичный. В окнах нажмите cntrl + H, чтобы вызвать функцию поиска/замены. Убедитесь в том, чтобы выбрать «Режим поиска» -> «Extended»

для «Find What» вы должны поставить в \ г \ п и «Заменить на» вы должны поставить в , и нажмите «Заменить все ».

Теперь у вас должен быть список всех ваших URL-адресов, разделенных запятой.

Шаг 4 - Создание PHP файла:

Создайте новый PHP-файл и установить:

<?php 
$urlString = "http://www.urlsample1.com/article/sony-thing-and-stuff, http://www.urlsample1.com/article/warner-brothers-stuff"; 

    //this will replace the word article with the word product 
    $newstring = str_replace("article", "product", $urlString); 
    //turns string into array 
    $myArray = explode(',', $newstring); 
//loops through array to find first case of - and turn it to a/
for ($i = 0; $i < count($myArray); ++$i) { 
     $haystack = $myArray[$i]; 
     $needle = "-"; 
     $replace = "/"; 
     $pos = strpos($haystack, $needle); 

     if ($pos !== false) { 
      $finalstring = substr_replace($haystack, $replace, $pos, strlen($needle)); 
     } 
    //removes common url elements 
    $newShort = str_replace("http://www.urlsample1.com", "", $finalstring); 
    $oldShort = str_replace("http://www.urlsample1.com/product", "/article", $myArray[$i]); 
    //prints out the old and new url in .htaccess format 
    print("Redirect 301 " . $oldShort . " " . $newShort . "</br>"); 
}; 

?> 

Шаг 5 - .htaccess

Ваш выход из выше должен выглядеть например:

Redirect 301 /product/sony-thing-and-stuff /product/sony/thing-and-stuff 
Redirect 301 /product/warner-brothers-stuff /product/warner/brothers-stuff 

и может быть помещен в файл .htaccess.

Примечание: этот метод может стать медленным с Apache и не является предпочтительным, но это самый быстрый способ, который я могу придумать, чтобы запустить и запустить ваш клиент в новой ситуации.

+0

Вы также можете использовать Regex для обработки его из одного перенаправления. Это будет \/[article] {1,} \ /, чтобы выбрать статью и изменить ее на «продукт», но я не уверен, что Regex обрабатывает только первый экземпляр «-», а не выбирать все из них. Вот почему я выбрал этот метод. Если вы более знакомы с регулярным выражением, вы можете сделать одно правило повторной записи. – AdamSC

Смежные вопросы