*이 게시물은 그누보드5 5.6.14 버전 기준으로 작성된 내용입니다.

 

안녕하세요~ 오랜만에 인사 드립니다.

 

요즘 회사 확장부터 시작해서 신경 쓸 부분이 한두개가 아니었어서 뒤늦게 인사를 드리네요.

 

본문 들어가도록 하겠습니다!

 

 

왜 짧은 주소가 필수인가?

 

 

 

  • 검색엔진 친화: URL 키워드 노출 UP, 크롤링 효율 UP!
  • CTR 개선(클릭률): 긴 한국어 인코딩 URL 대비 공유/복사에 용이
  • 보안 & 유지보수: 규칙적 구조 → 중복성 콘텐츠·404 관리 쉬움
  • 성능: 불필요한 파라미터/리다이렉트 제거로 응답 속도 UP!
☑️트래픽이 주로 모바일·SNS에서 유입되는 2025년 기준으로 "짧은 URL"은 필수 요소입니다.

 

 

사전점검

 

체크사항 내용
버전 그누보드 5.6.14
환경 PHP 버전 8.1 이상, mod_rewrite 또는 rewrite 활성화
백업 .htaccess, config.php, DB 백업은 필수!
적용 범위 루트 도메인 + 서브 디렉토리 모두 동일 규칙 사용 권장

 

 

서버별 리라이트 설정

 

Apache (.htaccess)
# ① mod_rewrite 활성
RewriteEngine On

# ② www 정규화 (선택)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# ③ 그누보드 짧은주소 규칙
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 게시판 글
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2 [QSA,L]
# 게시판 첫 페이지
RewriteRule ^([a-zA-Z0-9_-]+)$ /bbs/board.php?bo_table=$1 [QSA,L]

 

 

Nginx
# server { ... }
location / {
    try_files $uri $uri/ @gnuboard;
}

location @gnuboard {
    # 게시판 글
    if ($request_uri ~* "^/([a-zA-Z0-9_-]+)/([0-9]+)$") {
        rewrite ^ /bbs/board.php?bo_table=$1&wr_id=$2 last;
    }
    # 게시판 첫 페이지
    if ($request_uri ~* "^/([a-zA-Z0-9_-]+)$") {
        rewrite ^ /bbs/board.php?bo_table=$1 last;
    }
}

 

 

그누보드 내부 설정

 

 

define('G5_USE_SHORT_URL', true); // 없으면 추가

 

head.sub.php
  • $GLOBALS['seo_title']과 $GLOBALS['seo_description'] 값이 짧은주소 URL에서도 정확히 출력되는지 테스트
  • <link rel="canonical" href="<?= $canonical ?>"> 삽입
ALT/OG 태그
  • list.skin.php, view.skin.php에서 썸네일 ALT 값 = {$view['wr_subject']}
중복 제거
  • robots.txt에서 /bbs/board.php Allow, /bbs/? 형 파라미터 Disallow (선택)
사이트맵 제출
  • Search Console에 /sitemap.xml→ 새 URL 색인 요청
성능 & 보안 체크리스트
항목 확인
301 → 200 체인 없음 Lighthouse 'Redirects'
Core Web Vitals 합격 Search Console
WAF 예외 Cloudflare Page Rules 확인(클라우드플레어 이용시)
원본 IP 로그 HTTP_CF_CONNECTING_IP 변수 패치

 

FAQ

 

Q: 티스토리에서도 가능한가요?
A: 티스토리는 서버 설정 권한이 없어서 불가능합니다. 독립 서버 환경 기준으로 작성된 가이드입니다.

Q: 게시판이 수백개인데, 규칙 하나로 충분한건가요?
A: 네 충분합니다. bo_table 변수만 변하면 패턴 매칭으로 모두 처리됩니다.

Q: 캐싱 서비스 이미지 URL이 너무 길어요.
A: 이미지 CDN 경로는 SEO 영향이 거의 없다고 봐도 무방하므로 유지하시면 됩니다. 다만 ALT랑 Title 부분만 적절하게 채워주세요.

 

적용 후 최종 점검 리스트

 

  • 해외/국내 크롤러 수집 확인
  • 새 URL로 구글에서 site:주소 검색으로 노출 확인 (보통 3일 정도 걸립니다)

 

이 글을 마무리 하면서
짧고 깔끔한 URL은 클릭률과 색인 속도 둘 다 잡는 핵심 장치입니다.
직접 적용하기 벅차다면 클릭 → 웹프림 문의
무료 상담으로 사이트 맞춤 SEO 설계를 도와드립니다.

 

 




사용자데모 

http://s913456345674565.cafe24.com/g5/ 













/tail.php 추가 

<?php @include_once(G5_PATH.'/banner_fly.php'); ?> 












참고 
http://blog.bits.kr/135

게시판에서 에디터를 여러개 적용하는 법입니다. 아래 코드 그대로입니다.
기존 write.skin.php에서 해당 코드부분을 아래코드로 변경하시면 됩니다. 

간단하고 혹시나 중복이면 댓글 주시면 따로 조치 하겠습니다. 


<? 
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 

if ($is_dhtml_editor) { 
    include_once("$g4[path]/lib/cheditor4.lib.php"); 
    echo "<script src='$g4[cheditor4_path]/cheditor.js'></script>"; 
    echo cheditor1('wr_9', '100%', '250'); 
    echo cheditor1('wr_10', '100%', '250'); 
    echo cheditor1('wr_content', '100%', '250'); 

?> 


<script> 
function doSubmit (theform) 


    myeditor1.outputBodyHTML(); 
    myeditor2.outputBodyHTML(); 
    myeditor3.outputBodyHTML(); 

 document.text.value = myeditor1.outputBodyHTML(); 
 document.text2.value = myeditor2.outputBodyHTML(); 
 document.text3.value = myeditor3.outputBodyHTML(); 



</script> 




  <tr> 
    <td align="center" class="talen_wr_tit">text1</td> 
    <td colspan="3" align="center"> 
    <? if ($is_dhtml_editor) { ?> 

  <input type="hidden" name="text" value=""> 
  <textarea id="fm_post1" name="wr_9"></textarea> 

  <!-- 에디터를 화면에 출력합니다. --> 
  <script type="text/javascript"> 
  var myeditor1 = new cheditor();            // 에디터 개체를 생성합니다. 
  myeditor1.config.editorHeight = '250px';    // 에디터 세로폭입니다. 
  myeditor1.config.editorWidth = '100%';      // 에디터 가로폭입니다. 
  myeditor1.inputForm = 'fm_post1';          // textarea의 ID 이름입니다. 
  myeditor1.run();                            // 에디터를 실행합니다. 
  </script> 

  <? } else { ?> 
    <textarea class="text_style01" name="wr_9" id="fm_post1" value="<?=$write[wr_9]?>"><?=$write[wr_9]?></textarea> 
  <? }?> 
 </td> 
  </tr> 
  <tr> 
    <td align="center" class="talen_wr_tit">text2</td> 
    <td colspan="3" align="center"> 
    <? if ($is_dhtml_editor) { ?> 

  <input type="hidden" name="text2" value=""> 
  <textarea id="fm_post2" name="wr_10"></textarea> 

  <!-- 에디터를 화면에 출력합니다. --> 
  <script type="text/javascript"> 
  var myeditor2 = new cheditor();            // 에디터 개체를 생성합니다. 
  myeditor2.config.editorHeight = '250px';    // 에디터 세로폭입니다. 
  myeditor2.config.editorWidth = '100%';      // 에디터 가로폭입니다. 
  myeditor2.inputForm = 'fm_post2';          // textarea의 ID 이름입니다. 
  myeditor2.run();                            // 에디터를 실행합니다. 
  </script> 
  
  <? } else { ?> 
 <textarea class="text_style01" name="wr_10" id="fm_post2" value="<?=$write[wr_10]?>"><?=$write[wr_10]?></textarea> 
  <? }?> 
 </td> 
  </tr> 

  <tr> 
    <td align="center" class="talen_wr_tit">text3</td> 
    <td colspan="3" align="center"> 
    <? if ($is_dhtml_editor) { ?> 

  <input type="hidden" name="text3" value=""> 
  <textarea id="fm_post3" name="wr_content"></textarea> 

  <!-- 에디터를 화면에 출력합니다. --> 
  <script type="text/javascript"> 
  var myeditor3 = new cheditor();            // 에디터 개체를 생성합니다. 
  myeditor3.config.editorHeight = '250px';    // 에디터 세로폭입니다. 
  myeditor3.config.editorWidth = '100%';      // 에디터 가로폭입니다. 
  myeditor3.inputForm = 'fm_post3';          // textarea의 ID 이름입니다. 
  myeditor3.run();                            // 에디터를 실행합니다. 
  </script> 
  
 <? } else { ?> 
 <textarea class="text_style01"  name="wr_content" id="fm_post3"><?=$write[wr_content]?></textarea> 
  <? }?> 
  </td> 
  </tr> 


skin/board/sketchbook5/images/bg_shelf.jpg
145 × 505px
jPlayer 스킨 이미지입니다.
 
좀 쉽게 만들기 위해 소스를 약간 수정합니다.
 
skin/board/sketchbook5/css/music.css
 
.frameset2{background:url(../images/bg_shelf.jpg) 0px -80px;
.frameset2{background:url(../images/bg_shelf.jpg) 0px;
로...
 
상 : 145 × 25px
중 : 145 × 230px
하 : 145 × 23px
 
가로폭은 마음대로 해도 될겁니다.

3개의 이미지를 만들어 색을 넣은 후
사이에 1px의 여백을 넣어 이어붙힙니다. (145 × 280px)
 
선반 형식으로 하지않고 그냥 이렇게 통짜 그림으로 까셔도 됩니다.
게시판 폭 × 280px
비율이 달라지면... CD 모양은 왼쪽으로, 나머지 내용은 오른쪽으로 가게 됩니다.
 

모바일에서도 스케치북 스킨을 사용하려면 'mobile/skin/board'에 동일하게 넣어주고 게시판 스킨 설정을 해주면 됩니다.

하지만 모바일에서 수정해야 할 것들이 여러군데 보입니다.
jPlayer는 아래와 같이 간단한 수정만 해보았습니다.

보여줄 화면이 작기 때문에 두번째 업로드 이미지는 출력되지않게 합니다.

mobile/skin/board/sketchbook5/view.skin.php


mobile/skin/board/sketchbook5/css/music.css
도 소소하게 수정해줍니다.

첨부한 music.css 파일은 모바일용입니다.

몇군데 조금 수정한 정도이니

참고만 하십시오.

 
 
예 : http://internationale.kr/bbs/board.php?bo_table=info_sketchbook&wr_id=1&me_code=4090



.htaccess 파일 안에 아래 내용을 추가하시면 됩니다. 

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 

RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)$ bbs/board.php?bo_table=$1&wr_id=$2 
RewriteRule ^([a-zA-Z0-9_]+)$ bbs/board.php?bo_table=$1 
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ bbs/write.php?bo_table=$1 
</IfModule> 

RewriteRule  첫번째는 도메인/게시판테이블/게시물번호 로 각 게시물에 연결됩니다. 
RewriteRule  두번째는 도메인/게시판테이블 로 각 게시판에 연결됩니다. 
RewriteRule  세번째는 도메인/게시판테이블/아무거나(숫자만은 안됨) 글쓰기로 연결됩니다. 

조금 이해를 돕자면 앞쪽에 [a-zA-Z0-9_] 은 $1 이 됩니다. 
도메인/board1 로 연결할경우 bbs/board.php?bo_table=$1이 bbs/board.php?bo_table=board1 로 연결이 되는 형태입니다. 
글쓰기는 고민하다가, 그냥 저렇게 만들어봤습니다. 

각 게시판에서 URL들은 별도로 변경해주시면 됩니다. 다 적으려니 너무 많네요.
유의할 점은 도메인/게시판/ 의 형태로 위에 / 가 붙으면 안되고 같은 이름의 폴더 또한 존재 하면 안됩니다. 

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 

부분은 도메인에 www를 강제로 제거하는 부분입니다. 

저는 서브도메인도 사용하려고 넣어놨는데 불필요하시면 삭제 하셔도 상관 없습니다. 

대략적인 감만 익힌 부분이라 틀린 부분이 있을 수도 있습니다.

회원스킨이 basic 일 경우 skin/member/basic/ 폴더안에 login_check.skin.php 파일을 생성하고 
아래의 코드를 추가합니다. 


1<?php
2if (!defined('_GNUBOARD_')) exit// 개별 페이지 접근 불가
3 
4// 해당 회원의 접근일시와 IP 를 저장
5sql_query(" update {$g5['member_table']} set mb_today_login = '".G5_TIME_YMDHIS."', mb_login_ip = '{$_SERVER['REMOTE_ADDR']}' where mb_id = '{$mb['mb_id']}' ");
6?>



모바일에서도 사용하기 위해서는 모바일 회원스킨 경로에  login_check.skin.php 파일을 생성해주셔야 합니다.


파일이 많아서 찾기 힘드시겠지만 전체 파일에 대해서 서치하는 것만 아시면  간단한것은 쉽게 찾을수가 있을 것 같아서  제가 주로 쓰는 방법을 올립니다.

일반 Windows에서는 Aptana Studio 3를 설치합니다. 

File=>New=PHP Project 로 하고 Project Name에 g5-5.0.16으로 하셔서 Finish합니다. 

버전에 맞는 전체 파일을 Copy & Paste로 Documents 밑의 Aptana workspace밑의 프로젝트 폴더에 전체를 카피하시면 됩니다. 

그리고 Aptana Studio 3에서 App Explorer에 모든 파일과 디렉토리가 나타나면 상단 중간쯤에 후레쉬 라이트를 클릭해서 원하는 문구를 넣으면 모든 파일에서 찾아 줍니다. 

저는 서치하는 기능만으로 사용합니다.


EditPlus를 이용한 검색 - 여러파일 찾기도 좋습니다^^


게시판 상하단 내용이나 '내용관리'로 웹페이지를 만들 때는 자유로운 다양한 배치가 필요합니다.

 
고수님들에게는 불필요한 팁이지만...
DHTML 에디터의 '표' 기능을 활용하는 방법에 대해 알아봅니다.
 
작성할 내용의 배치도를 머리 속에 그려보고... 게시판에서 표를 만듭니다.
대부분의 에디터들이 표 만들기(만들기, 추가, 삭제, 분할, 병합) 기능을 제공할 것입니다.
 
 
그림글글글글글글글글글글글글글글
글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글글
 
이런 식으로 작성해서 완료하고
수정으로 들어가서 HTML 방식에서 선 색을 바탕색과 동일하게 바꾸면 됩니다.
Ckeditor에서는 작성시에 선색이 들어가지 않으니 더 편하네요.
(눈에 잘 띄게 일부러 선색을 넣어보았습니다)
 
 
   Commercial Free Icon Sets
   
100 Flat
Artist: GraphicLoads
License: Freeware
 
100 icons - max. 256 px
Rating: 4.40 (42 votes)
100 Flat Vol. 2
Artist: GraphicLoads
License: Freeware
 
100 icons - max. 256 px
Rating: 4.35 (20 votes)
   
 
이렇게 1차 작성하고...
 
 
   Commercial Free Icon Sets
   
100 Flat
Artist: GraphicLoads
License: Freeware
 
100 icons - max. 256 px
Rating: 4.40 (42 votes)
100 Flat Vol. 2
Artist: GraphicLoads
License: Freeware
 
100 icons - max. 256 px
Rating: 4.35 (20 votes)
   
 
이렇게 수정 완료
배치와 꾸미기에 따라 더 이쁘게 만들 수도 있겠지요.


+ Recent posts