2016-10-15 77 views
2

我的問題與Wordpress (Postname Permalink) 404 error類似,但它超出了問題範圍。wordpress change permalink 404 message - 301重定向

我有一個客戶端誰擁有數百個默認的WordPress博客結構YYYY/MM /後名稱

頁,他們想將它移動到永久鏈接結構/名稱後

然而現有的Google和其他搜索引擎中的鏈接必須重定向到正確的「新」頁面,而不是404或主頁。

我的問題是,用最新版本的Wordpress(在撰寫本文時爲4.6.1) - 如果你只是進入設置>固定鏈接>後名稱會正常工作?

OR

你還需要修改.htaccess文件,使「老頁」重定向到新的一頁?

如果是這樣 - 什麼是正確的.htaccess文件語法,以便每個新的鏈接是'301重定向'告訴搜索引擎該頁面已永久移動?

謝謝!

Wordpress Codex on Permalink Structure

回答

1

你可以試試這個看你.htaccess

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

而且你可以創建一個名爲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命令放在哪裏?你是說只是添加上面的代碼功能,它會奇蹟般地工作?如果你在網址中也有'category',即category/post-name,該怎麼辦? – Viktor

+0

@Viktor,如果你喜歡這個答案,並且你覺得它有用,不要忘了投票。 – prosti

+0

Prosti - 謝謝。在我有機會測試它之後,我會將其標記爲已檢查。你能否快速回應我上面的問題?你怎麼做/類別/ postname/ – Viktor

1

最後,你可以嘗試更新固定鏈接結構:) ,並嘗試舊的網址。

如果有些事情出錯了,您可以恢復到舊的永久鏈接結構。