콘텐츠로 건너뛰기

[워드프레스] 다음 웹마스터도구 등록, 워드프레스+All in One SEO(AIOSEO)+AWS 라이트세일 사용자 | robots.txt

다음 웹마스터도구, 언제까지 베타 할것인가?
robots.txt 수정을 위한 AIOSEO 코드 수정

[잉여타임즈] 아마존 AWS 라이트세일 / 워드프레스 / AIOSEO / 다음 웹마스터도구 베타
[잉여타임즈] 아마존 AWS 라이트세일 / 워드프레스 / AIOSEO / 다음 웹마스터도구 베타

필자는 아마존 AWS 라이트세일에 워드프레스 블로그를 운영중이다.

티스토리 블로그의 경우, 자동으로 포스팅이 다음에 노출되지만, 워드 프레스나 여타 블로그는 그렇지 못하다. 해서, 다음은 수동으로 매번 글의 존재를 등록해 줘야 한다.

하지만, 워드프레스는 SEO 플러그인(필자는 All in One SEO 사용)의 의존성 때문에 쉽지 않았다. robots.txt에 관한 내용과 더불어 해결 방법을 이야기 하고자 한다.


다음(Daum) 노출 – 웹마스터 도구

다음 검색노출을 위한 도구로, 다음 웹마스터도구가 있다. 구글에는 서치콘솔, 네이버에는 서치 어드바이저가 있는것과 같이 말이다.

다음 웹마스터 도구에 사이트를 등록 하려면, 사이트 인증을 위해, 사이트의 robots.txt에 다음에서 제공하는 PIN코드 한줄을 파일에 추가해야 한다. 하지만, 필자가 사용하는 SEO 플러그인 All in One SEO(AIOSEO)는 robots.txt를 자동 생성해 준다. AIOSEO는 robots.txt에 사용자 지정 규칙 등록기능을 제공하긴 하지만, 다음의 PIN코드 요구사항과 같이, 사용자 에이전트 이름없는 규칙추가는 불가능하다.

robots.txt는 웹사이트에 웹 크롤러 같은 로봇들의 접근을 제어하긴 규약으로, 사이트의 접근 가능한 경로, 접근 불가능한 경로, 사이트맵, 그리고 RSS파일의 주소가 적히게 된다. https://www.mysite.com/robots.txt와 같은 접근이 일반적이다.

다음 웹마스터도구는 베타라서 그런지, 구글이나 네이버와는 다르게 심플하다. 하단 “PIN코드 발급받기”에서 사이트 인증을 위한 PIN코드를 발급 받을 수 있다.


사이트가 인증되면, 수집요청 메뉴에서 RSS와 사이트맵 등록, 그리고 포스팅(문서등록)을 수집요청 할 수 있다. 등록과 요청한 내용이 리스트 형태로 표시되지는 않는다. 하지만 시간이 지나면 요약메뉴에서 수집된 정보를 확인 할 수 있다.

[잉여타임즈] 다음 웹마스터도구 > 요약
[잉여타임즈] 다음 웹마스터도구 > 요약


웹마스터 도구 – 사이트 인증 요구사항

다음의 요구사항대로 PIN코드 robots.txt에 추가하면 되지 아니한가?

하지만, 내가 선택한 워드프레스 SEO 플러그인은 All in One SEO(AIOSEO)이다. AISEO는 설정을 기반으로 다이나믹하게 robots.txt를 생성하는데, 자체 에디터에서 에이전트 규칙이 없는 문구는 추가 불가능하다.

다시 말해서, 일반적인 robots.txt 작성 규칙은 User-agent(사용자 에이전트) 접근자 안으로 Allow(허용가능한 경로), Disallow(불가능한 경로)가 정의되는것이 일반적이다.

하지만, 다음은 robots.txt 문서에 위와같은 필드 구분없이, 그들이 원하는 PIN코드 한줄만 추가되길 원했다. (6 라인), AIOSEO는 지원하지 않는 기능이다.

...
User-agent: agentName
Allow: /path/
Disallow: /path2/
...
#DaumWebMasterTool:12312335431dfsfdfsafgasdfsdrwerwerdfrtqwetwrtwrtR1234KSDdas


더해서, 워드프레스가 설치된 리눅스 시스템에 접근해 robots.txt를 수동추가 하는것은 어떨까?

AIOSEO는 자체 설정을 기반으로 robots.txt를 자동생성 하는데, 이는 충돌이 발생 할 가능성이 있고, 그들이 권고하는 사항은 아니다.

public function checkForPhysicalFiles() {
		// ...

		Models\Notification::addNotification( [
			'slug'              => uniqid(),
			'notification_name' => 'robots-physical-file',
			'title'             => __( 'Physical Robots.txt File Detected', 'all-in-one-seo-pack' ),
			'content'           => sprintf(
				// Translators: 1 - The plugin short name ("AIOSEO"), 2 - The plugin short name ("AIOSEO").
				__( '%1$s has detected a physical robots.txt file in the root folder of your WordPress installation. We recommend removing this file as it could cause conflicts with WordPress\' dynamically generated one. %2$s can import this file and delete it, or you can simply delete it.', 'all-in-one-seo-pack' ), // phpcs:ignore Generic.Files.LineLength.MaxExceeded
				AIOSEO_PLUGIN_SHORT_NAME,
				AIOSEO_PLUGIN_SHORT_NAME
			),
			'type'              => 'error',
			'level'             => [ 'all' ],
			'button1_label'     => __( 'Import and Delete', 'all-in-one-seo-pack' ),
			'button1_action'    => 'http://action#tools/import-robots-txt?redirect=aioseo-tools',
			'button2_label'     => __( 'Delete', 'all-in-one-seo-pack' ),
			'button2_action'    => 'http://action#tools/delete-robots-txt?redirect=aioseo-tools',
			'start'             => gmdate( 'Y-m-d H:i:s' )
		] );
}


그래서, SEO 플러그인의 양대 산맥이라 할 수 있는, 그리고 robots.txt 에디터 기능을 제공하는, Yoast SEO 플러그인으로 변경하는건 어떨까?

워드프레스를 시작한지 얼마 안되서 잘 몰라 검색해보니, 점유율 면에서도, 친화적 인터페이스 및 기능 면에서도 AIOSEO가 우수하다고 한다. 바꾸고 싶지 않다, 그 동안 설정해 둔것도..


All in One SEO(AISEO) 코드 수정 – 아이디어

워드프레스 관리자 페이지의 All in One SEO의 도구 메뉴에서 User-agent 필드가 있는 규칙을 추가 가능하다.
하지만, 다음 PIN코드 같이, 규칙없는 싱글라인을 추가 가능케 하자는 생각이다. 요구사항은 아래와 같다.

1) 사용자 에이전트 : #으로 시작하는 필드 이름 일 경우, 앞에 #을 제거하고 robots.txt에 싱글라인을 추가
2) 규칙 : 허용하면 추가, 금지하면 제거
3) 디렉토리 경로 : Robots.txt 미리보기에서 설명으로 활용

[잉여타임즈] 워드프레스 관리자 페이지 > All in One SEO > 도구
[잉여타임즈] 워드프레스 관리자 페이지 > All in One SEO > 도구


미리보기 상에서는 User-agent와 Allow, Disallow 필드가 보이지만, 저장하고 미리보면 아래와 같이 robots.txt가 작성 됨을 볼 수 있다.

[잉여타임즈] 워드프레스 관리자 페이지 > All in One SEO > 도구
[잉여타임즈] 워드프레스 관리자 페이지 > All in One SEO > 도구


All in One SEO(AISEO) 코드 수정 – robots.txt 생성 코드 수정

터미널로 AWS 라이트세일 터미널에 접속한다. 이전에 포스팅 했던 모바X텀 기준으로 설명하겠다.


RobotsTxt.php가 있는 위치로 이동 후, bitnami로 권한을 변경하고, 더블 클릭해 RobotsTxt.php를 연다.

[잉여타임즈] 모바X텀에서 RobotsTxt.php 수정을 위해 열기
[잉여타임즈] 모바X텀에서 RobotsTxt.php 수정을 위해 열기
cd /bitnami/wordpress/wp-content/plugins/all-in-one-seo-pack/app/Common/Tools
sudo chown bitnami:bitnami RobotsTxt.php
ls -l

RobotsTxt.php의 180라인 부근의 stringify() 함수에 ====… 블럭 내용을 추가하고 저장한다. 그리고 AIOSEO 도구메뉴에서 위의 요구사항대로 동작하는지 테스트 해본다. 잘 동작하는가?

	/**
	 * Stringifies the parsed rules.
	 *
	 * @param  array  $allRules The rules array.
	 * @return string           The stringified rules.
	 */
	private function stringify( $allRules ) {
		$robots = [];
		foreach ( $allRules as $agent => $rules ) {
			if ( empty( $agent ) ) {
				continue;
			}
			
			//=======================================================================
			// if $agent is start from '#', print $agent only after removing first "#"
			// if ucfirst( $type ) == 'Disallow', skip it
			// by Sam
			$firstLetterOfAgent = substr( $agent, 0, 1 );
			if( $firstLetterOfAgent == '#' ) {
        
				foreach ( $rules as $type => $path ) {
					foreach ( $path as $p ) {
						if ( empty( $p ) || ucfirst( $type ) == 'Disallow' ) {
							continue;
						}
						$agentTmp = substr($agent, 1, strlen($agent) - 1);
						$robots[] = sprintf( '%s', $agentTmp );
					}
				}       

				$robots[] = '';
				continue;
			}
			//=======================================================================
...

AISEO 플러그인 업데이트 시, 문제
RobotsTxt.php이 수정된 상태에서 업데이트 시도 시, 파일이 수정된 것을 알았는지 업데이트가 샐패 됩니다.해서, 플러그인을 삭제 후 신규 설치하고, 코드를 재 수정하면 정상 동작하는 것을 확인했습니다.
다행히, 재 설치시 이전 설정 내용은 유지 되었습니다. 플러그인 영역 외, 다른영역에 설정내용을 저장해 두는 듯 싶습니다.


함께보면 좋을 글


[잉여타임즈] surplstimes@gmail.com