2016-10-15 2 views
2

내 질문은 Wordpress (Postname Permalink) 404 error과 비슷하지만 질문을 뛰어 넘습니다.wordpress change permalink 404 메시지 - 301 리디렉션

나는 기본 워드 프레스 블로그 구조 YYYY/MM/후 이름

의 페이지의 수백을 가진 클라이언트가 기존 그러나 그들은 구조/후 이름을

을 퍼머 링크로 이동하려면 Google 및 기타 검색 엔진의 링크는 404가 아닌 올바른 '새'페이지로 리디렉션되어야하며 홈 페이지도 아닙니다.

제 질문은 최신 버전의 Wordpress (이 4.6.1을 쓰는 시점)입니다. 설정> Permalinks> Post-Name으로 바뀌면 올바르게 작동할까요?

또는

'이전 페이지'새 페이지로 리디렉션되도록 여전히 htaccess로 파일을 수정해야합니까?

만약 그렇다면 - 올바른 .htaccess 파일 구문은 각각 새로운 링크가 페이지가 영구적으로 이동했다는 것을 검색 엔진에 알리는 '301 리디렉션'입니까?

감사합니다.

.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

사용이가 /YYYY/MM/post-name/ 리디렉션

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; 
    } 

} 

당신의 functions.php의 대안으로이 템플릿 ->/후 이름/

+0

멋진 아이디어! functions.php는 개별 테마 폴더 안에 있습니까? 아니면 이것이 글로벌 함수입니까? 이 add_action 명령을 어디에 넣으시겠습니까? 그냥 위의 코드를 함수에 추가하면 마술처럼 작동합니까? URL에 '카테고리', 즉 카테고리/게시물 이름이있는 경우 어떻게됩니까? – Viktor

+0

@Viktor, 당신이 대답을 좋아한다면, 그것이 유용하다는 것을 안다면 투표를 잊지 마세요. – prosti

+0

Prosti - 감사합니다. 나는 그것을 시험 할 기회를 얻은 후에 그것을 체크 할 것이다. 위의 질문에 신속하게 응답 할 수 있습니까? 어떻게해야합니까/category/postname/ – Viktor

1

마지막을, 당신은 단지 영구 링크 구조를 업데이트 할 수 있습니다 : , 이전 URL을 사용해보십시오.

일이 잘못되면 오래된 퍼머 링크 구조로 되돌릴 수 있습니다.