검색어 'daybreaker'에 대한 1 개의 검색 결과

  1. 2008/04/07 [TC1.6~] 댓글알리미 Redirection by daybreaker (7)

안녕하세요. 이곳 하우투 블로그에 글을 처음 쓰게 된 daybreaker입니다. :)

이번에 소개드릴 팁은 텍스트큐브를 웹디렉토리에 바로 설치하지 않고 하위 디렉토리에 설치하신 경우(예: example.com이 블로그 주소가 아니고 example.com/blog가 블로그 주소일 때) 다른 블로그에 댓글을 달 때 그 하위 경로까지 다 적어주지 않으면 댓글알리미를 받지 못하는 것을 해결하는 방법입니다. 즉 example.com이라고만 적어도 댓글알리미를 받을 수 있게 하는 것이지요.

TC1.6부터 추가된 댓글알리미 백업 기능을 작성한 게 저입니다만 막상 제가 daybreaker.info/blog에 블로그를 운영하고 있고 댓글 달 때마다 daybreaker.info까지만 적어왔기 때문에 태터툴즈/텍스트큐브 블로그 운영 3년이 넘었음에도 테스트 데이터가 단 한 개도(-_-) 없다는 것이 디버깅의 걸림돌이었습니다.; 그래서 생각 난 김에 뿔도 뽑아버리자 하고 이 팁을 작성하게 되었습니다.

댓글알리미의 동작 원리

텍스트큐브의 댓글알리미는 해당 블로그 주소로 HTTP POST 요청을 보내어 interface/index.php가 POST 요청에 mode=fb라는 인자가 들어있는지 확인하여 댓글알리미 등록 함수를 호출하는 방식으로 이루어집니다. 트랙백처럼 댓글알리미용으로 존재하는 별도의 주소는 존재하지 않고 블로그 주소 자체가 댓글알리미 수신 주소가 되지요.

댓글알리미 Redirection 방법

다만 현재 텍스트큐브에서 공식적으로 지원하는 기능이 아니기 때문에 약간 복잡한 과정을 거쳐야 합니다.

  1. 먼저 웹디렉토리 루트에 다음과 같은 .htaccess 파일을 작성해야 합니다. 댓글알리미 요청은 POST method를 사용하여 전송되기 때문에 그냥 웹브라우저에 주소를 입력한 경우나 다른 곳에서 링크된 경우(이때는 GET method를 사용합니다)는 원래 홈페이지가 보여야 하니 그것을 필터링해주기 위한ㅈ것입니다.

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_METHOD} ^POST
    RewriteRule ^$ tc_commentnotify.php [QSA,L]
    </IfModule>
    
  2. 위에서 보신 것처럼 tc_commentnotify.php를 작성해야겠죠? (이 파일 이름은 원하시는대로 바꿔도 상관 없습니다.)

    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['mode']) && $_POST['mode'] = 'fb') {
            define('ROOT', './blog');
            include ROOT.'interface/index.php';
            exit;
        }
    }
    # To prevent unintended accesses
    header('HTTP/1.1 404 Not Found');
    echo 'This URL does not exist.';
    ?>
    
  3. 이 부분에 대해선 약간 논란의 여지가 있습니다만, 텍스트큐브 소스코드를 일부 고쳐야 제대로 동작합니다. lib/suri.php를 열어서 19번째 줄 즈음을 다음과 같이 고쳐주세요.

    if ($depth > 0) {
        if (preg_match('@^((/+[^/]+){' . $depth . '})(.*)$@', $url, $matches))
            $url = $matches[3];
        else { // 앞뒤로 중괄호를 쳐줍니다.
            // respond::NotFoundPage(); # 이 부분을 주석처리합니다.
            // Comment Notifier Customization Patch!
            $url = '/'; $depth = 0; $interfacePath='/';
        }
    }
    

    이 패치가 정식 버전에 적용될지, 아니면 다른 방식으로 구현될지는 아직 정해지지 않았습니다만 일단 댓글알리미가 급하신 분들은 저렇게 사용하셔도 큰 무리가 없을 것 같습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/04/07 20:56 2008/04/07 20:56
daybreaker 이 작성.