링크의 변경과 유지, 재연결

web | 2006-04-04

포트폴리오 정리 해 놓은 디렉토리를 옮겼더니 링크가 끊어진 방문자들의 레퍼러가 많이 보였다. 포트폴리오 부분은 기존 파일을 그냥 올려놓기만 해서 그동안 레퍼러나 스팸처리 등을 해오지 않았었는데 이번에 디렉토리를 옮기면서 404오류 페이지에서 체크가 되기 시작했다. 사실 로그를 분석하고 있지 않았으면 이렇게 많은 사람들이 내 홈페이지에 들어와서 "파일이 없습니다" 메세지를 보고 나가는지 몰랐을 것이다. 논란이 많기는 하지만 퍼머링크(permanent link)는 역시나 중요한 것이다.

가장 마음에 걸린 페이지는 히트펌프에 대한 설명퍼간 네이버 블로그 페이지 였다. 글은 그쪽 DB에 올라가 있으니 문제 없지만 이미지들은 내 홈페이지에서 가져가고 있어서 이미지가 다 깨져 있었다. 지금은 리다이렉션 시켜 놓아서 이미지가 정상적으로 나온다. 또, 그동안 많은 사람들이 검색엔진을 통해서 포트폴리오 페이지에 있는 정보를 참조해 간다는 것도 알 수 있었다. 이것 역시 복구되어 있다.

나는 별 생각없이 관리 차원에서 디렉토리를 옮겼을 뿐인데 이로 인해서 많은 사람들이 불편을 겪는 다는 것을 새롭게 느꼈다. 우리도 검색엔진을 통해서 검색을 하다 보면 수 많은 끊어진 링크를 발견 하게 된다. RSS경로를 바꾸거나 블로그 툴을 새로 깔면서 URL이 바뀌는 것도 같은 경우이다. 나는 좀더 효율을 바라고 실행한 일이지만 그 결과 기존에 배포되어 있던 경로는 모두 끊어지게 된다.

퍼머링크는 어떻게 보면 의지의 표명이다. 내가 한번 배포한 문서에 대해서는 책임을 지겠다는 의지이다. 하지만 굳이 퍼머링크를 표시 하지 않는다고 하여도 그 링크를 유지하는 일은 매우 중요하다. 링크가 유지 되지 못하면 많은 블로거들이 글을 쓸 때 하는 페이지안에서 링크를 거는 행위 자체가 매우 무의미해 지게 된다. 검색엔진이 그러한 페이지를 잘 찾아 주기는 하지만 이 역시 한계가 있다.

문서의 배포에는 책임이 따른다. 그리고 책임감 있는 문서들이 많을 때 웹이 비로소 플랫폼이 될 수 있지 않을까?

참고로, 페이지 리다이렉션은 Apache의 Redirect기능을 이용할 수도있고, PHP를 이용해서 처리 할 수도 있다. 나 같은 경우는 아래와 같이 간단한 코드를 이용해서 리다이렉트를 처리 했다.

<?php
if (substr($_SERVER['REQUEST_URI'], 0, 11) == "/portfolio/") {
	header('Location: /home' . $_SERVER['REQUEST_URI']);
}
?>

Apache Redirect는 아래 같이 사용한다. PHP가 없이도 .htaccess 파일만 있으면 처리가 되기 때문에 편하지만 나는 Regular Expression를 잘 몰라서 PHP를 사용했다.

Redirect permanent /home/work.php http://hyeonseok.com/home/profile.php

page Fragement(http://mydomain.com/myfile.html#pageFragment)의 경우 브라우져에 따라서 보내지기도 하고 안보내 지기도 하기 때문에 자바스크립트를 이용해서 처리 해야 한다. 물론 이 방법은 자바스크립트를 이용하기 때문에 한계가 있다.

/**
 * Redirect Archive page uri to pmwiki
 * Question : How can I redirect uri with page fragment(URL#anchor) using Apache module?
 */
var loc = window.location.href;
pageFragment = loc.split("#")[1];
if (pageFragment == "WebStandard") {
	window.location.href = "/pmwiki/index.php?n=Main.WebStandards";
} else if (pageFragment == "TableLayoutVsCssLayout") {
	window.location.href = "/pmwiki/index.php?n=Main.Layout";
} else if (pageFragment == "DevelopmentTool") {
	window.location.href = "/pmwiki/index.php?n=Main.Tools";
...
...
...
}

Comments

Post a comment

:

: 공개 되지 않습니다. Gravatar를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.