-
- 1. Robots Meta Tag
-
-
- 1.1. 헤더에 meta 태그 출력
-
-
- 1.1.1. 패치의 이유
-
- 1.1.2. 현재 설정된 허용/금지 기준
-
1.2. a 태그에 rel 속성 출력
-
-
- 1.2.1. 패치의 이유
-
- 1.2.2. 현재 설정된 허용/금지 기준
-
1.3. 부작용
-
- 1.4. wiki.pl 수정
-
- 1.5. 추가 업데이트 내역
-
- 1.6. 사용자 의견
-
1. Robots Meta Tag
검색엔진봇이 이 페이지를 저장할 것인지(index), 이 페이지에 있는 링크를 따라갈 것인지(follow)를 허용 또는 금지하는 태그를 출력한다.
1.1. 헤더에 meta 태그 출력
html출력의 head 부분에 검색로봇 관련 meta 태그를 출력한다.
예: 둘 다 금지하는 경우는 아래와 같은 라인이 출력에 포함된다.
<META NAME='robots' CONTENT='noindex,nofollow'/>
무엇보다도, 페이지의 이전 수정본(old revision)이 검색 엔진에 등록되는 것을 막기 위해서이다.
스패머가 페이지를 수정하거나 코멘트,트랙백 등을 이용하여 스팸을 남기고, 사용자가 페이지를 다시 복원하더라도, 스팸은 여전히 이전 수정본에 그대로 남아있게 된다. 스팸이 포함된 수정본이 검색엔진에 등록되면 다음과 같은 문제가 있다. (WikiSpam에 있는 설명입니다.)
첫째, 구글이 페이지랭크를 계산할 때 스패머가 광고한 사이트 링크가 계속 집계가 되기 때문에, 스패머가 의도한 목적을 그대로 이루게 된다. 이 패치로 그것을 방지할 수는 있겠지만, 이건 스팸을 줄이는 방법이 되지는 않는다. (스패머는 이런 패치가 적용되었는지 아닌지에 관심을 두지 않을테니)
둘째, 스패머는 기존의 스팸 문구를 검색함으로써 스팸을 남길 장소를 찾는다고 한다. 따라서 이전 수정본을 검색 엔진에 노출되지 않게 함으로써 스패머가 이곳을 찾아내는 것을 조금이라도 막을 수 있다. 이런 면에서는 이 패치도 스팸을 줄이는 수단이 될 수 있을 것이다.
1.1.2. 현재 설정된 허용/금지 기준
허용/금지 기준은 다음과 같다.
- index/follow
- 일반적인 페이지 출력 (wiki.pl?페이지이름)
- 변경내역 (wiki.pl?action=rc)
- 전체 페이지 목록 (wiki.pl?action=index)
- noindex/nofollow
- 그 외 전부
- 정확히는 (현재 구현상) action 파라메터에 "", "rc", "index" 세 가지를 제외한 다른 값이 들어간 경우와, search, dosearch 파라메터에 값이 있는 경우
- 이 외에 경우 중에 의도치 않게 index/follow로 처리되는 경우가 있을 수 있다. 그런 경우를 찾으면 알려주기 바람.
- index/nofollow
- 페이지는 저장을 하지만 페이지 내의 링크를 따라가지는 못하게 하는 경우. 현재 이런 경우는 없음
- noindex/follow
- 저장을 하지는 않고 링크만 따라가는 경우. 현재 이런 경우도 없음
WikiPatches/RobotsNoFollow와, 좀 더 개선한 WikiPatches/RobotsMetaTag의 내용 중에서 제일 깔끔하고 무난해 보이는 패치(WikiPatches/RobotsNoFollow의 RobotsNoFollowD)를 적용하면서, 검색 결과와 역링크 출력 화면을 noindex/nofollow로 처리하기 위해 수정.
1.2. a 태그에 rel 속성 출력
위키 소스 내에서, ScriptLink()또는 ScriptLinkChar()를 불러서 a 태그를 출력하는 경우, 즉
- 일반적인 페이지 링크 ([[UseModWiki소스수정]] 같은 링크)
- action을 부르는 링크들 (메뉴바에 있는 "환경설정", 편집가이드에 있는 "변경내역보기", "이 페이지를 수정" 등등)
의 경우에, 필요에 따라 "rel="nofollow" 를 추가한다.
헤더에 메타 태그를 붙이는 것 만으로는, 검색로봇이 저장할 필요가 없는 페이지로 "들어가는" 것을 막아주질 못한다.
- UseModWiki소스수정 페이지는 index, follow로 설정되어 있으니 저장하고, 링크들을 따라 탐색한다
- "변경내역(history) 보기"를 따라 들어감 - 들어갈 필요가 없다.
- 변경내역 화면은 저장하지 않고 (메타 태그의 noindex)
- 변경내역 화면에서 링크되어 있는 예전 수정본들의 링크도 따라가지 않는다. (메타 태그의 nofollow)
저장하지도 않고 그 안의 링크를 탐색하지도 않을 그런 페이지에 애초에 들어갈 필요가 없다. 검색엔진 입장에서도 낭비지만, 위키가 있는 서버 쪽에서도 무의미하게 화면을 출력해야 해서 낭비다. 특히나 (/섹션단위수정 패치를 적용한 이후로, 헤드라인에 붙어 있는 "edit"링크를 죄다 따라 들어가게 된다. (/History 페이지 같은 경우는 헤드라인만 약 100개다 -_-; 웹 서버 로그를 살펴보다가 구글봇이 이런 섹션 편집 링크를 죄다 들어가는 것을 보고 기겁한 것이 이 rel 속성 패치를 하게 된 계기)
1.2.2. 현재 설정된 허용/금지 기준
메타 태그의 경우와 유사하다.
- rel="nofollow" 속성이 붙는 링크
- href값에 "action=XXX"이 포함되어 있으면서, XXX가 "rc"또는 "index" 이외의 값인 경우
- rel 속성이 없는 링크
- 그 외 전부
- ScriptLink()나 ScriptLinkClass()를 사용하지 않고 바로 A 태그를 출력하는 경우는 처리하지 못함.
- 외부URL - 괘씸한 코멘트스팸을 생각하면 여기도 달아줘야 하는데, 위키에서는 URL을 누가 작성한 건지 알 수 없어서...
- 인터위키. Local:action=history 같은 경우도 포함.
- 외부URL과 인터위키는 무조건 nofollow속성을 붙여 버릴까 싶기도 한데, 그럼 검색로봇 입장에서는 위키에서 밖으로 나가는 링크가 하나도 없는 게 되어 버려서 꺼려진다.
부작용까지는 아니지만, 저 메타 태그를 준수해주지 않는 검색엔진 봇에게는 소용 없음. 국내 검색 엔진들은 요즘 어떤가... -_-?
이미 구글 등 검색엔진에 들어가버린 수정본들을 제거해 줄 수는 없을 듯.
자기 위키의 이전 수정본들이 검색 엔진에 등록되지 않는 것이 오히려 싫은 사람도 있을 수 있겠다.
1.4. wiki.pl 수정
sub GetHtmlHeader {
...
my $action = lc(&GetParam('action',''));
my $search = &GetParam('search','').&GetParam('dosearch','').&GetParam('reverse','');
if (
($search eq "") &&
($action eq "" ||
$action eq "rc" ||
$action eq "index")
) {
$html .= "<META NAME='robots' CONTENT='index,follow'/>\n";
} else {
$html .= "<META NAME='robots' CONTENT='noindex,nofollow'/>\n";
}
$html .= $UserHeader;
$html .= "\n";
...
}
ScriptLink()함수와 ScriptLinkClass() 수정
sub ScriptLink {
my ($action, $text) = @_;
my $rel;
if ($action =~ /action=(.+?)\b/i) {
if ((lc($1) ne "index") && (lc($1) ne "rc")) {
$rel = 'rel="nofollow"';
}
}
return "<a $rel href=\"$ScriptName" . &ScriptLinkChar() . "$action\">$text</a>";
}
sub ScriptLinkClass {
my ($action, $text, $class) = @_;
my $rel;
if ($action =~ /action=(.+?)\b/i) {
if ((lc($1) ne "index") && (lc($1) ne "rc")) {
$rel = 'rel="nofollow"';
}
}
return "<a $rel href=\"$ScriptName" . &ScriptLinkChar() . "$action\" class=\"$class\">$text</a>";
}
1.5. 추가 업데이트 내역
ext2.1h - wiki.pl/action=XXX 으로 연결되는 링크에 rel="nofollow" 속성을 출력하게 함
좀 전에 로그를 다시 봤는데, 여전히 섹션 편집 화면까지 들락거린다 -_-; 어째서일까...
며칠 지나고 나니까 섹션 편집 링크는 좀 덜 들어오는 것 같은데, 여전히 페이지 편집 화면에는 많이 들어오네... 예전에 저장했던 캐쉬데이타를 통해 들어와서 그런가? -_-; 메타태그와 rel속성 둘 다 문제는 없어 보이는데 효과는 잘 모르겠습니다 -_- 구글에서 "페이지를 편집 중 site:gypark.pe.kr"처럼 찾아보면 나오는 게 없는 걸로 봐서 noindex는 잘 지켜지는 것 같기도 한데... 근데 site:nyxity.com 하면 많이 나오는 건 바벨은 유니코드 버전 직전까지 저 태그가 없었기 때문이라고 치고, site:jof4002.net의 경우는 그런 태그가 없는데도 안 나오네요. 알쏭달쏭~
위키위키분류