본문 바로가기

취미, 관심/IT.모바일

[그누보드5] 네이버 검색 최적화를 위한 canonical 사용하기

그누보드로 만든 사이트를 네이버의 서치 어드바이저를 사용해 사이트가 네이버 검색이 잘 되는 조건을 갖추고 있는지를 확인해 보면, 선호 URL 부분에 대표 URL을 확인할 수 없다는 메시지가 뜹니다.

내용은 제가 관리중인 사이트;; 입니다.

 

sir을 뒤적거려보니 그누보드 5.0.3부터 삭제된 canonical 때문인데요, 사실 그누보드 팁 자료실에 지운아빠님께서 올려주신 코드가 있습니다.

 

5.0.3 에서 삭제된 canonical 을 그대로 사용하길 원하시는 경우 > SIR

기존 코드를 수정하여 사용하세요.
편리님께서 코드를 수정하거나 삭제해야 할 것 같다고 하셔서 (사용자가 canonical 을 사용할 것인지 선택) 저도 삭제 쪽으로 의견을 드렸었는데, 그대로 사

sir.kr

이걸 head.sub.php 상단의 <head> 태그 아래쪽에 넣어주면 되는데, 저는 이곳에 SEO 관련 내용이 있어, 그 아래쪽에 바로 붙여넣었습니다.

 

원래 코드는 아래와 같습니다.

 

    // canonical 지정
    $canonical = '';
    if ($wr_id) $canonical = 'http://'.$_SERVER['HTTP_HOST'].'/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
    else if ($bo_table) $canonical = 'http://'.$_SERVER['HTTP_HOST'].'/bbs/board.php?bo_table='.$bo_table;
    else $canonical = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    echo '<link rel="canonical" href="'.$canonical.'">'.PHP_EOL;

제가 관리하는 사이트는 https 접속과 짧은 주소를 사용하므로, 살짝 수정을 하고, 하는김에 중복되는 부분을 제거해 봅니다.

좀더 깔끔하게 해보고 싶었는데 상상력이 부족한가봐요..

// canonical 지정
$canonical = '';
// 짧은 주소 체크 
if($config['cf_bbs_rewrite'] == 2) { // 짧은 주소 사용(글이름)
	if ($sca && $wr_id) $canonical = '/'.$bo_table.'/'.$wr_seo_title.'/?sca='.$sca;
	else if ($sca) $canonical = '/'.$bo_table.'/?sca='.$sca;
	else if ($wr_id) $canonical = '/'.$bo_table.'/'.$wr_seo_title.'/';
	else if ($bo_table) $canonical = '/'.$bo_table;
} else if($config['cf_bbs_rewrite'] == 1) { // 짧은 주소 사용(숫자)
	if ($sca && $wr_id) $canonical = '/'.$bo_table.'/'.$wr_id.'?sca='.$sca;
	else if ($sca) $canonical = '/'.$bo_table.'/?sca='.$sca;
	else if ($wr_id) $canonical = '/'.$bo_table.'/'.$wr_id;
	else if ($bo_table) $canonical = '/'.$bo_table;
} else { // 짧은 주소 사용 안함
	if ($sca && $wr_id) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&sca='.$sca;
	else if ($sca) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&sca='.$sca;
	else if ($wr_id) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
	else if ($bo_table) $canonical = '/bbs/board.php?bo_table='.$bo_table;
}
if (empty($bo_table)) $canonical = $_SERVER['REQUEST_URI'];

echo '<link rel="canonical" href="'.'https://'.$_SERVER['HTTP_HOST'].$canonical.'">'.PHP_EOL

만약, 코드가 길어 불편하다면 아래 내용을 사용해주시면 됩니다.

 

짧은 주소(숫자)만 사용하는 경우

// canonical 지정
$canonical = '';
if ($sca && $wr_id) $canonical = '/'.$bo_table.'/'.$wr_id.'?sca='.$sca;
else if ($sca) $canonical = '/'.$bo_table.'/?sca='.$sca;
else if ($wr_id) $canonical = '/'.$bo_table.'/'.$wr_id;
else if ($bo_table) $canonical = '/'.$bo_table;
else $canonical = $_SERVER['REQUEST_URI'];

echo '<link rel="canonical" href="'.'https://'.$_SERVER['HTTP_HOST'].$canonical.'">'.PHP_EOL

짧은 주소(글 이름)으로 사용하는 경우

// canonical 지정
$canonical = '';
if ($sca && $wr_id) $canonical = '/'.$bo_table.'/'.$wr_seo_title.'/?sca='.$sca;
else if ($sca) $canonical = '/'.$bo_table.'/?sca='.$sca;
else if ($wr_id) $canonical = '/'.$bo_table.'/'.$wr_seo_title.'/';
else if ($bo_table) $canonical = '/'.$bo_table;
else $canonical = $_SERVER['REQUEST_URI'];

echo '<link rel="canonical" href="'.'https://'.$_SERVER['HTTP_HOST'].$canonical.'">'.PHP_EOL

기본값으로 사용하는 경우

// canonical 지정
$canonical = '';
if ($sca && $wr_id) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&sca='.$sca;
else if ($sca) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&sca='.$sca;
else if ($wr_id) $canonical = '/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
else if ($bo_table) $canonical = '/bbs/board.php?bo_table='.$bo_table;
else $canonical = $_SERVER['REQUEST_URI'];

echo '<link rel="canonical" href="'.'https://'.$_SERVER['HTTP_HOST'].$canonical.'">'.PHP_EOL