들어가며
방문자 수가 적은 신규 사이트의 경우 검색 엔진이 새로운 콘텐츠를 수집하는 속도가 느릴 수 있습니다. 이럴 때 바이두 서치어드바이저(Baidu Zhanzhang)에서 제공하는 인터페이스를 통해 능동적으로 링크를 푸시하여 수집 속도를 높일 수 있습니다. 바이두 서치어드바이저 관련 기능 메뉴: 로그인 후 왼쪽 목록의 链接提交(링크 제출)를 클릭하세요.
- 능동 푸시(主动推送): 가장 빠른 제출 방식입니다. 당일 생성된 새로운 링크를 이 방식으로 즉시 바이두에 푸시하여 신규 링크가 적시에 수집되도록 하는 것을 권장합니다.
- 자동 푸시(自动推送): 가장 편리한 제출 방식입니다. 자동 푸시용 JS 코드를 사이트의 모든 페이지 소스 코드에 배포하면, 해당 페이지가 조회될 때마다 링크가 자동으로 바이두에 푸시됩니다. 능동 푸시와 함께 사용할 수 있습니다.
- sitemap: 정기적으로 웹사이트 링크를 sitemap에 넣고 바이두에 제출할 수 있습니다. 바이두는 주기적으로 제출된 sitemap을 크롤링하고 확인하여 링크를 처리하지만, 수집 속도는 능동 푸시보다 느립니다.
- 수동 제출(手动提交): 링크를 일회성으로 바이두에 제출할 때 이 방식을 사용할 수 있습니다.
P.S. 필자의 환경은 PHP5.3 + WordPress4.2입니다.
1. 능동 푸시(主动推送)
가장 빠른 방식이라고 합니다. WP에서는 구현하기 매우 쉬운데, functions.php를 직접 편집하면 됩니다. (WP 관리자 화면의 외모 -> 테마 파일 편집기 -> 테마 함수(functions.php)에서 온라인으로 편집하거나, FTP 도구로 내려받아 수정한 후 다시 업로드할 수 있습니다. 경로는 wordpress/wp-content/themes/[currentTheme]/functions.php입니다.) 시작 주석이 끝나는 지점에 다음과 같이 필터를 추가합니다.
/*submit url*/
function submitUrl($postID, $post) {
$url = 'www.ayqy.net/blog/'.$post->post_name.'/';
$api = 'http://data.zz.baidu.com/urls?site=www.ayqy.net&token=[yourtoken]';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url."\n",
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
//echo $result;
if (function_exists( 'swpsmtp_test_mail' )) {
$email = 'nwujiajie@163.com';
swpsmtp_test_mail( $email, 'Submit Result', $result.'<p><a href="http://'.$url.'">点我</a>查看原文<p>' );
}
}
add_action('publish_post', 'submitUrl', 0, 2); // submit url
/*end submit url*/
주의: 위 코드의 [yourtoken]을 바이두 서치어드바이저에서 받은 토큰으로 바꾸세요.
포스트를 발행할 때 필터가 실행되어 문서 URL을 생성하고, curl_exec를 통해 POST 요청을 보내 URL을 제출한 뒤, 마지막으로 링크 제출 결과를 이메일로 발송합니다. (WP에서 이메일을 보내려면 SMTP 설정이 필요하며, 필자는 Easy WP SMTP 플러그인을 사용하고 있습니다.)
효과는 괜찮습니다. 포스트를 발행할 때마다 링크가 자동으로 제출됩니다. 단점은 이전 링크를 제출할 수 없다는 점인데, 이전 링크를 제출해야 한다면 sitemap 자동 제출을 사용할 수 있습니다. 아래에서 자세히 설명합니다.
2. 자동 푸시(自动推送)
...자동 푸시용 JS 코드를 사이트의 모든 페이지 소스 코드에 배포하세요...
고려하지 않습니다. 페이지에 로드되는 JS가 이미 충분히 많아서 더 느려지는 것은 좋지 않습니다. 만약 꼭 이 방법을 사용해야 한다면 footer.php를 편집하여 (functions.php 수정과 동일한 방식 및 위치) </body> 앞에 다음 코드를 추가하세요.
<script>
(function(){
var bp = document.createElement('script');
bp.src = '//push.zhanzhang.baidu.com/push.js';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
P.S. 위 코드는 바이두 서치어드바이저에서 제공하는 것이며, 모든 사이트가 동일하므로 수정할 필요가 없습니다.
이 방법은 권장하지 않습니다. 번거롭지는 않더라도 모든 사용자가 그 비용을 감수하게 하는 것은 옳지 않기 때문입니다.
3. sitemap
가장 편리한 방법입니다. 물론 자동으로 업데이트되는 sitemap.xml 파일이 먼저 있어야 합니다. 이 작업은 직접 할 필요 없이 WP 플러그인인 All In One SEO Pack을 사용하면 됩니다.
플러그인을 설치하고 활성화하면 WP 관리자 왼쪽 메뉴에 All in One SEO가 생깁니다. 하위 메뉴 중 XML 사이트맵이 바로 우리가 필요한 sitemap.xml입니다. 사이트맵 업데이트를 클릭하면 출력되는 정보는 다음과 유사합니다.
2016-03-08 15:46:03 3.29 MB memory used generating the dynamic 压缩 root sitemap in 0.628 seconds, 35.38 MB total memory used.
2016-03-08 09:17:31 3.25 MB memory used generating the dynamic root sitemap in 0.596 seconds, 35.34 MB total memory used.
2016-03-08 00:41:29 3.25 MB memory used generating the dynamic root sitemap in 0.595 seconds, 35.34 MB total memory used.
2016-03-07 19:23:09 Daily scheduled sitemap check has finished.
2016-03-07 19:23:09 已成功通知bing贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)的变动。
2016-03-07 19:23:09 通知google贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)变动失败,无法通过wp_remote_get()访问。
추측건대 sitemap 경로는 http://www.ayqy.net/blog/sitemap.xml일 것입니다. 직접 다운로드하거나 브라우저로 접속해 본 뒤, 문제가 없음을 확인했다면 이 URL을 바이두 서치어드바이저에 입력하세요.
특별 주의: sitemap 링크는 폼 예시에서 보여주는 형식이 아닌, http://를 포함한 전체 URL이어야 합니다.
예시는 다음과 같습니다:
www.site.com/site.txt
www.site.com/site.xml
그런 다음 보안 문자를 입력하고 제출하면 됩니다. 5분 뒤 상태가 "정상"으로 표시되면 완료된 것입니다. 이제 더 이상 링크 제출에 신경 쓸 필요가 없습니다.
4. 구조화 데이터 플러그인
공식적으로 데이터 제출용 WP 플러그인을 제공합니다. 다운로드 주소: http://bs.baidu.com/zhanzhang/wp-baidusubmit-140213.zip
소개는 다음과 같습니다.
자동 sitemap 푸시, 콘텐츠 수집 최적화 sitemap 권한이 없거나 어떻게 제출해야 할지 모르겠나요? 구조화 데이터 플러그인이 해결해 드립니다. 포럼 게시물 페이지의 과거 URL 데이터를 순회하여 자동으로 sitemap을 생성하고 바이두에 제출합니다.
포럼 신규 콘텐츠 실시간 푸시, 수집 가속화 매일 방대한 양의 새로운 게시물이 올라오나요? 각종 데이터가 빈번하게 업데이트되나요? 구조화 데이터 플러그인이 해결해 드립니다. 새 게시물이 발행되면 즉시 바이두 서치어드바이저로 푸시하며, 게시물 페이지에 변화가 생기면 바이두도 실시간으로 해당 데이터를 업데이트합니다.
양질의 콘텐츠 노출 최적화, 사용자 클릭률 향상 양질의 콘텐츠가 충분히 눈에 띄지 않나요? 구조화 스니펫을 적용하여 노출을 최적화하고 결과 클릭률을 높여 트래픽 상승을 꿈꾸세요.
실제로 웹마스터에게 작은 스파이더 한 마리를 맡기는 것과 같습니다. 콘텐츠가 업데이트(예: 포스트 발행)되면 스파이더가 한 바퀴 돌며 수집한 내용을 처리하여 바이두에 제출합니다.
WP 플러그인에서 오류가 발생할 수 있습니다 (공식 제품임에도 불구하고). 오류 내용은 다음과 같습니다.
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/xxx/
CURLOPT_FOLLOWLOCATION은 링크를 깊게 크롤링하는 데 사용되는데, PHP 안전 모드(safe_mode)에서는 이 옵션이 지원되지 않습니다. 플러그인을 위해 안전 모드를 끄는 것은 권장하지 않으므로, 플러그인을 수정하겠습니다. sitemap.php (경로는 wordpress/wp-content/plugins/baidusubmit/sitemap.php)의 시작 부분인 <?php 태그 다음 줄에 아래 코드를 추가합니다.
// fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
$mr = $maxredirect === null ? 5 : intval($maxredirect);
if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
} else {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
if ($mr > 0) {
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$rch = curl_copy_handle($ch);
curl_setopt($rch, CURLOPT_HEADER, true);
curl_setopt($rch, CURLOPT_NOBODY, true);
curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
do {
curl_setopt($rch, CURLOPT_URL, $newurl);
$header = curl_exec($rch);
if (curl_errno($rch)) {
$code = 0;
} else {
$code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
if ($code == 301 || $code == 302) {
preg_match('/Location:(.*?)\n/', $header, $matches);
$newurl = trim(array_pop($matches));
} else {
$code = 0;
}
}
} while ($code && --$mr);
curl_close($rch);
if (!$mr) {
if ($maxredirect === null) {
trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING);
} else {
$maxredirect = 0;
}
return false;
}
curl_setopt($ch, CURLOPT_URL, $newurl);
}
}
return curl_exec($ch);
}
// end fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
그 후 오류가 발생하는 문장을 다음과 같이 교체합니다.
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec_follow($ch); // fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
주의: 링크를 깊게 크롤링하는 것은 느립니다. 이 플러그인을 설치하면 포스트를 발행할 때마다 약 30초 정도 소요되므로 신중히 결정하세요.
5. 요약
먼저 필수적인 것은 sitemap 자동 제출입니다.
[caption id="attachment_961" align="alignnone" width="776"]
사이트맵[/caption]
그 다음 능동 푸시와 구조화 데이터 플러그인은 보조 수단으로 활용할 수 있습니다.
[caption id="attachment_962" align="alignnone" width="242"]
바이두 사이트맵[/caption]
아직 댓글이 없습니다