본문 바로가기
소프트웨어 사용&설치 등/미디어위키 Mediawiki

[미디어위키] 외부 자동 링크 막기. disable automatic external link

by 언제나초심. 2016. 2. 14.
반응형

미디어위키를 설치해서, 개인 목적으로 사용중인데.


http:// 로 시작되는 링크가 자동생성이 되는 게 너무 불편하다. 

왜냐하면, 이게 생성이 되고. 내가 이것을 누르는 순간. '리퍼러' 로 남을 수가 있기 때문이다. 


개인이나 내가 접속한 사이트의 관리자가 무서운 것은 아니고,


구글이 무섭다. ㄷㄷㄷㄷㄷㄷ


구글봇이 나의 숨겨놓은 서버에 로그를 남기고 가거나, 3년전 잠깐 생성했던 호스트로 접속로그를 남기고 나면. 소름이 돋는다. 이건 인간의 영역이 아니자나ㄷㄷㄷㄷ


그래서, 가능한한 흔적을 안 남기고 다니려고 한다. 



<meta name="robots" content="noindex, nofollow" />

<meta name="referrer" content="never" />


먼저 상단에 이런 설정을 했었다.


방법은 소스 에서 아래와 같은 구문이 추가 되면 된다.



$wgHooks['BeforePageDisplay'][] = 'insertMeta';

function insertMeta( $out ) {

$out->addMeta( 'robots', 'noindex, nofollow' );

$out->addMeta( 'referrer', 'never' );

return true;

}




그래도, 링크는 계속 남아 있는데. 리퍼러는 안 남기는 하지만. 나는 그냥 auto-link 가 싫을 뿐이다. 그러니, 이것을 없애려고 하니...php 에서 어찌 할 방법은 없고 해서. 프론트로 없애버리자는 생각까지 이르게 되었다. 


미디어 위키에서 검색해보면 <nowiki>http://e2xist.tistory.com</nowiki> 라는 식으로 링크를 nowiki 로 감싸라는 말 뿐이다. 

(아 이 불친절한 외국인덜)




이제 소스를 첨부하겠다. 


$(document).ready(disableExternalLinks);


function disableExternalLinks()

{

if($("a.external").length)

{

$("a.external").each(function(){

if($(this).attr("href").substring(0,4)=="http"){

$(this).wrap("<div></div>").closest("div").html($(this).html());

}

});

}

}



이런식으로 추가를 해주면 된다. 그냥 두 부분을 하나로 합쳐서 쓰곤 하지만, 습관적으로 함수는 함수로 나눠놓고, 

ready 에서 호출을 해주면 된다. 



== 여담 == 

딥빡으로 방금 만든 소스인데, 사실 가능하면 php 에서 구현하는게 좋다. 

그래도 프론트로라도 대충 구현하는 이유는, 오픈소스에서 백엔드 건드리면, 업데이트할때 힘들어지기 때문에...훅 으로 넣어보려고 찾아보는데, 아무래도 이 부분은 훅으로 못 찾겠다. 추측은 사실 하고 있다. 아마도 autolink 비슷한 이름의 모듈이 있을 것으로 예상 중. 나중에 확인하게 되면 포스팅 하도록 하겠다. 



출처 : 나


반응형