예전에도 몇 번 포스팅하는데 써먹었지만, WordPress의 Simple-Tagging-Plugin; STP 을 사용했었다. 그러다가 WP 2.3에서 태그 기능이 지원되면서 사용하지 않게 되었는데, 그러다보니 몇 가지를 STP에서 쓰던 것에서 WP 2.3 내장 기능으로 옮겨야 하더라.
- 각 태그 정보가 STP에서 WP 2.3 태그로 이전되어야
- 포스팅에 출력되는 태그 정보가 STP 기반에서 WP 2.3 태그 정보로 바뀌어야
- “http://블로그주소/?tag=태그이름” 으로 오던 것을 리다이렉션 해줘야
사실 1 번 작업은 PHP 스크립트로 어찌어찌 했고 – 물론 상당량의 수작업도. 2번 작업도 약간의 테마 템플릿 파일 수정으로 해결했다. 남은 것은 3번 항목. 이전에 포스팅했던 것처럼 ?tag=태그이름 주소가 WP 2.3에 선점되면서 “http://블로그주소/?stp=태그이름” 으로 이전했다.
문제는 이런 작업 와중에 (Google) sitemap을 도입하면서 “블로그주소/?stp=태그이름” 항목이 구글과 다음에 등록되어 버린 것 -_-;; 리퍼러 로그를 확인해보니 검색어로 유입되는 것 중 일부가 저 주소를 참조하더라. 그래서 이걸 어찌하지도 못하고 고민을 하다가, 예전에 사용한다고 말했던 URI redirection plugin을 떠올리고 거기서 “블로그주소/?stp=태그이름” 을 “블로그주소/?tag=태그이름” 으로 가도록 수정했다. 무려 정규 표현식; regular expression 을 지원해서 별 다른 어려움 없이 – 그리고 번잡함 없이 – 주소를 모두 옮길 수 있었다. 사용한 규칙은 다음과 같다.
Source URI: /wordpress/\?stp=(.*)
Target URI: https://rein.kr/blog/?tag=$1
간단하고† 편안하다 :)
완성된 시스템은 더 이상 뺼 것이 없을 때 나온다고 한다.(이거 출처가 기억이 안난다; 누가 좀 알려주면 ;) ) 그런 의미에서 플러그인 하나를 제거한 것을 매우 기뻐하기로 했다.
*
†정확히 어디의 정규식을 쓰는 것인지는 모르겠지만 (.*)이 $1으로 맷칭;matching되서 사용되고, ?도 이스케입;escape 해줘야한다 – ?는 대부분의 정규식 문법에서 이스케입되어야 하지만, 저거 생각 못해서 한동안 제대로 URI rewrite가 안되서 삽질했다 Orz