[그누보드5] 네이버 검색 최적화를 위한 canonical 사용하기
![[그누보드5] 네이버 검색 최적화를 위한 canonical 사용하기](/content/images/size/w2000/wordpress/2022/10/0-18-1.png)
그누보드로 만든 사이트를 네이버의 서치 어드바이저를 사용해 사이트가 네이버 검색이 잘 되는 조건을 갖추고 있는지를 확인해 보면, 선호 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