2016-07-08 4 views
2

Wordpressのリダイレクトのhtaccessリダイレクト - ポストの数百

私のクライアントは、非常に悪いパーマリンク構造と、彼らはHTMLの束のように簡単な記事を作成した数百の「製品」ページでWPのウェブサイトを持っています。たとえば :

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 

私はゼロから新しいサイトを作成し、製品セクションのカスタムポストタイプを使用してのようなURLを整理するために計画しています:彼はすべてのトラフィックを失いたくdoesntの以来

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リダイレクトのための最も簡単な解決策は何だろうと思っていた? もし彼が数十人しか持っていなかったら、私は手作業でもできるが、数百人... また、これはクリーンであることを心に留めておく。プロダクトをCSVファイル経由で)公開しています。プロダクションウェブサイトのパーマリンク構造を変更するだけです。

すべてのヘルプはSEOについて

答えて

-1

をいただければ幸い、私はあなたが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 

にあなたは再書き込みをするためにかなり容易になるだろうが、余分な/提示しようとしていること問題。

SEOの目的で301がほしいと思っているので、ここで私は何をしますか?

ステップ1 - 現在のURLを取得する:

は、現在のすべてのポストパーマリンクのリストを取得します。 David GeorgeでMySQLのこのSQLクエリは、トリックを行う必要があります。

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を取り、Notepad ++または同等のものにダンプします。ウィンドウでは、検索/置換機能を呼び出すためにcntrl + Hを押してください。 「検索モード」を選択してください - >については

「拡張」あなたはすべてを交換して「あなたはに入れて打つ必要があります「で置き換え」の\ rを\ nはに入れなければならない「とは何の検索」 '

すべてのURLのリストがカンマで区切られているはずです。

ステップ4 - PHPファイルを作成します - .htaccessの

上からあなたの出力が見えるはずです5

<?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>"); 
}; 

?> 

ステップ:

新しいPHPファイルを作成し、設定をlike:

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を使用して1回のリダイレクトから処理することもできます。記事を選択してそれを 'product'に変更するには\/[article] {1、} \ /になりますが、Regexが ' - 'の最初のインスタンスのみを処理し、それらのすべてを選択しないことはわかりません。だから私はこの方法を選んだのです。 regexにもっと慣れているなら、1回の書き換えルールを実行できます。 – AdamSC

関連する問題