[텍스트큐브 1.9 베타6] 이동 기기에서 바뀌는 글 주소(문자/숫자 주소)를 설정값대로 바꾸게 하기

  텍스트큐브의 관리 화면에서 '설정 → 블로그 → 블로그 공개 정책'에 보면 이런 항목이 있다.

모바일 인터페이스 ☑ iPhone / iPod touch로 블로그에 접속할 경우 자동으로 iPhone용 인터페이스로 이동합니다.

  이 항목을 켜 두면 텍스트큐브는 아이폰·아이포드·아이패드(iPad) 계열 기기를 쓸 때뿐만 아니라 안드로이드 운영체제를 쓰는 이동 기기를 써서 블로그에 들어왔을 때까지 블로그의 일반 주소를 '/i'가 들어가는 이동 기기 화면 웹 주소로 옮겨 준다. (http://pat.im/1064 → http://pat.im/i/entry/…)

  그런데 텍스트큐브 1.9 베타6까지 이동 기기에서 알아서 바뀌는 글 주소는 언제나 문자 주소로 바뀌고 있다. 관리 화면에서 글 주소를 문자 주소 또는 숫자 주소 가운데 어떤 것을 쓸지 고를 수 있으나, 이 설정값이 이동 기기를 쓸 때 바뀌는 글 주소에는 적용되지 않고 있다.주1

  이동 기기에서 일반 글 주소를 바꾸어 주는 기능은 1.9 베타6에서 보면 interface/index.php의 50째 줄에 있다.

// Redirect for ipod touch / iPhone
$browserUtil = Utils_Browser::getInstance();
if(Setting::getBlogSettingGlobal('useiPhoneUI',true) && ($browserUtil->isMobile() == true)
&& (!isset($_GET['mode']) || $_GET['mode'] != 'desktop')
&& (!isset($_SESSION['mode']) || !in_array($_SESSION['mode'],array('desktop')))) {
if(isset($suri['id'])) {
$slogan = getSloganById($blogid, $suri['id']);
if(!empty($slogan)) {
header("Location: $blogURL/i/entry/".URL::encode($slogan)); exit;
}
} else {
header("Location: $blogURL/i"); exit;
}
}

  다음처럼 바꾸어 주면 이동 기기에서 일반 주소로 들어갔을 때에 관리 화면에서 글 주소를 설정한 대로 문자 또는 숫자 주소로 글 주소가 바뀐다.

// Redirect for ipod touch / iPhone
$browserUtil = Utils_Browser::getInstance();
if(Setting::getBlogSettingGlobal('useiPhoneUI',true) && ($browserUtil->isMobile() == true)
&& (!isset($_GET['mode']) || $_GET['mode'] != 'desktop')
&& (!isset($_SESSION['mode']) || !in_array($_SESSION['mode'],array('desktop')))) {
if(isset($suri['id'])) {
$slogan = getSloganById($blogid, $suri['id']);
if(Setting::getBlogSettingGlobal('useSloganOnPost',true) && !empty($slogan)) {
header("Location: $blogURL/i/entry/".URL::encode($slogan));
} else {
header("Location: $blogURL/i/entry/".$suri['id']);
}
exit;
} else {
header("Location: $blogURL/i"); exit;
}
}

※ 이 문제는 텍스트큐브 1.9 정식판에서 고쳐졌습니다.
(https://github.com/Needlworks/Textcube/issues/1643)

〈주석〉
  1. 텍스트큐브의 기본 설정값은 문자 주소를 글 주소로 쓰도록 되어 있고, 글을 쓰고 나서 처음 저장하면 글 제목이 문자 주소로 들어간다. 글 주소로 숫자 주소만 쓰면 글을 처음 쓰거나 글 제목을 바꾸었을 때에 글의 웹 주소를 정하는 일에 신경 쓰지 않아도 된다. back
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. 홀맨 2013/12/24 22:44 고유주소 고치기 답하기

    올려주신 글 보고 바로 적용 했습니다. 공개해 주시는 플러그인 도 감사 드리지만, 평소 저역시 큰 불편함을 느끼고 있는 이런 개선 도움안내가 정말 큰 도움이 되는 듯 싶습니다. 어디에도 없는 소중한 정보에 감사 인사 드립니다.

    즐거운 성탄절과 뜻깊은 한해 마무리가 되셨으면 합니다.

    p.s : 혹시 상기의 개선 도움안내를 적용하면, 공개해주신 "같은 글갈래의 다른 글 보기" 플러그 인의 모바일 적용에 도움이 될 수 있겠는지요? 저는 숫자주소 체계의 글주소를 사용하고 있습니다.

    • 팥알 2013/12/24 23:16 고유주소 고치기 답하기

      php를 고치는 방법은 할 수 있더라도 좀 복잡할 것 같고,
      텍스트큐브가 깔린 곳의 .htaccess에 이런 내용을 끼워 넣으면 될 것 같습니다.

      RewriteEngine On
      RewriteBase / # 설치 경로에 따라 다를 수 있음

      RewriteRule ^i/([0-9]+)$ i/entry/$1 [L,R=301]

      일반 웹 화면에서 주소를 넣어서 들어갈 때는 잘 되는데,
      이동 기기 화면에서는 어떤지 아직 시험해 보지 못했습니다.

  2. 비밀방문자 2014/02/15 17:15 고유주소 고치기 답하기

    관리자만 볼 수 있는 덧글입니다.

    • 팥알 2014/02/16 09:02 고유주소 고치기 답하기

      .htceess 안의 고쳐쓰기 규칙들은 나온 차례대로 한 줄씩 처리되므로 앞줄에 있는지 뒷줄에 있는지가 꽤 중요합니다.

      RewriteRule ^(.*\.(css|js))$ ../min/index.php?f=tc/$1 [L]
      RewriteRule ^i/([0-9]+)$ i/entry/$1 [L,R=301]

      7~13째 줄은 텍스트큐브에서 쓰는 고쳐쓰기 규칙이고, 위 두 명령문은 짐작하신 대로 rewrite.php가 적용되기 앞서 처리할 고쳐쓰기 규칙입니다. 두 명령문은 되도록 위쪽(단, 6째 줄 아래)에 두면 그들과 무관한 고쳐쓰기 규칙을 건너뛸 수 있어서 잘못 작동하는 일을 피할 수 있습니다.

      적어 주신 규칙 가운데는 minify에 관한 규칙을 가장 먼저 적어 주어야 좋을 것 같습니다.

    • 홀맨 2014/02/17 14:48 고유주소 고치기 답하기

      조언해 주신대로 수정 하였습니다. 덕분에 제 누리집이 더욱 쾌적한 환경에서 작동할 수 있게 되었습니다. 감사 드립니다 *^^*

      그런데 혹시 http://pat.im/863 에 남겨주신 활용법도 함께 활용해 보고자 하는경우 본문에 말씀하신 ".htaccess 파일의 적당한 곳" 은 어떤곳이 될는지 여쭙고 싶습니다. (아예 모르면 모를까 어설프게 적용규칙이 있다는게 알게되니 쓸데없는 고민만 늘어나는 듯 싶습니다. ^^;)

      사실 매번 번거로움을 드리는 듯 하여, 죄송스런 마음에 직접 해결해 보고자 문구를 여러군대에 삽입한 후, HTTP Compression Test 실험을 해보았으나 변화가 보이지 않았고, 구글 PageSpeed Insights 테스트 해서도 HTML 압축이 적용되지 않았다는 분석이 나와 이렇게 문의를 드리게 되었습니다. 매번 감사드리며 또 죄송스럽다는 말씀을 드리고 싶습니다.

    • 팥알 2014/02/17 17:01 고유주소 고치기 답하기

      지금 확인해 보니 홀맨님 블로그는 GZIP 압축이 되어 HTML이 전송되고 있습니다. 가끔 웹 누비개의 시렁(캐시)에 옛 자료가 남아서 바뀐 설정이 적용되지 않는 것처럼 나타날 수 있습니다. .htaccess 파일에서 바꾼 설정은 웹 누비개의 시렁이 갱신되면 바로 효과가 나타나는데 조금 시차가 있을 수 있고, 아파치 서버 엔진 설정(httpd.conf)은 아파치 서버를 다시 시작해 주어야 적용됩니다.

      때로 웹 누비개에 따라 이미 HTML 문서창을 열어 둔 채로 압축 설정을 하고 새로고침으로 보았을 때에 옛 상태대로 압축이 안 되는 걸로 나올 때가 있습니다. 찜찜하면 시렁을 모두 지우고 웹 창을 다시 열어서 접속해 보면 좋습니다. 겪어 보니 크롬이 그런 일이 덜했습니다. (저는 정말 찜찜하면 아예 웹 서버와 웹 창이 열린 운영체제를 모두 다시 시작하기도 합니다.)

      httpd.conf에서는 모든 경우에 mod_deflate가 작동하게 할 수 있고, 가상호스트 설정 안에 적어서 가상호스트마다 다르게 전송되게 할 수도 있습니다. .htaccess에 넣으면 httpd.conf에 설정된 것보다 먼저 적용될 겁니다. 압축 전송만 잘 된다면 보기 흉하지 않은 곳에 '적당히' 끼워 넣으면 됩니다. 정답이 하나는 아닙니다.

    • 홀맨 2014/02/18 11:19 고유주소 고치기 답하기

      항상 "우문현답" 을 해주셔서 감사 드립니다. 바쁘신 시간에 직접 제 누리집 확인까지 해 주시니 더욱 죄송스러울 따름 입니다.