2016-10-15 20 views
2

私の質問はWordpress (Postname Permalink) 404 errorに似ていますが、それは質問を超えています。wordpress change permalink 404メッセージ - 301リダイレクト

私は/ MM /ポスト名

デフォルトのWordpressのブログの構造YYYYに数百ページを持っているクライアントを持っており、彼らは既存ただし固定リンク構造/ポスト名に

それを移動したいですGoogleやその他の検索エンジンのリンクは、404やホームページではなく、正しい「新しい」ページにリダイレクトする必要があります。

私の質問は、Wordpressの最新版(この4.6.1を書いている時点で)です。あなたは単にSETTINGS> Permalinks> Post-Nameで正しく動作しますか?

OR

あなたはまだ「古いページが」新しいページにリダイレクトするように.htaccessファイルを変更する必要がありますか?

正しい場合は、新しいリンクがページが完全に移動したことを検索エンジンに伝える '301リダイレクト'になるように、正しい.htaccessファイルの構文がありますか?

ありがとうございました!

はあなた.htaccess

RewriteEngine On 
Redirect 301 /YYYY/MM/post-name/ http://yoursite.com/post-name/ 

にもWordpress Codex on Permalink Structure

答えて

1

あなたはこれを試すことができます参照してくださいそして、あなたはすべてのあなたの記事を一覧表示するenumerate.phpと呼ばれるファイルを作成することができます。

include "wp-load.php"; 

$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish'); 
$posts = $posts->posts; 

header('Content-type:text/plain'); 
foreach($posts as $post) { 
    switch ($post->post_type) { 
     case 'revision': 
     case 'nav_menu_item': 
      break; 
     case 'page': 
      $permalink = get_page_link($post->ID); 
      break; 
     case 'post': 
      $permalink = get_permalink($post->ID); 
      break; 
     case 'attachment': 
      $permalink = get_attachment_link($post->ID); 
      break; 
     default: 
      $permalink = get_post_permalink($post->ID); 
      break; 
    } 
    echo "\n{$permalink}"; 
    //echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}"; 
} 

がに列挙入れをWordPressのメインフォルダには、.htaccessファイルに使用できるリストが表示されます。

2

あなたのfunctions.php内の代替として使用します。このテンプレートを

add_action('template_redirect','check404'); 
function check404(){ 

    if (is_404()) { 

     $url = $_SERVER['REQUEST_URI']; 
     $url = esc_url_raw($url); 

     //FIND IF THERE IS A POST... 
     $e = explode("/", $url); 

     $reversed = array_reverse($e); 
     $number = $reversed[0]; 

     $link = get_permalink($number); 
     if(!empty($link)){ 
      wp_redirect($link, 301); 
      exit; 
     } 
     else 
      return; 
    } 

} 

これは/YYYY/MM/post-name/リダイレクトします - > /ポスト名/

+0

素晴らしいアイデア! functions.phpは個別のテーマフォルダの中にありますか?またはこれはグローバルな機能ですか?このadd_actionコマンドはどこに置いておきますか?関数に上記のコードを追加するだけでいいのですか?また、「カテゴリ」、つまりカテゴリ/投稿名がURLに含まれていた場合はどうなりますか? – Viktor

+0

@Viktor、あなたが答えが好きで、それが役に立つとわかったら、投票を忘れないでください。 – prosti

+0

Prosti - ありがとう。私はそれをテストする機会があった後にチェックします。上記の質問にすばやく対応できますか?/category/postname/ – Viktor

1

最後に、あなただけのパーマリンク構造を更新しようとすることができます:) 、古いURLを試してください。

何か問題が起こった場合は、古いパーマリンク構造に戻すことができます。

関連する問題