그누보드5 짧은주소 적용하기 v0.2.5 (16.10.21 수정) > 그누보드5 팁자료실

그누보드5 팁자료실

그누보드5 짧은주소 적용하기 v0.2.5 (16.10.21 수정) 정보

그누보드5 짧은주소 적용하기 v0.2.5 (16.10.21 수정)

첨부파일

shorturl-0.2.5 - apache.zip (5.1K) 1615회 다운로드 2016-10-21 02:45:43
shorturl-0.2.5 - nginx.zip (5.5K) 398회 다운로드 2016-10-21 02:45:43

본문

** 소개 **

기존에는 URL을 가진 변수 혹은 함수의 파라미터를 일일이 수정해야하는 번거로움이 있지만
해당 라이브러리 shorturl() 함수를 이용하면 bbs, shop으로 시작하는 주소들은 일괄 적용됩니다.


** 참고 **

짧은주소 기능을 사용한다고 주소를 짧게 적으실 필요 없습니다.
기존에 사용하는 방법 그대로 작성하면 됩니다.
<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=free">자유게시판</a>


** 수정내역 **

v0.2.5
# 구버전 익스플로러에서 한글 인식못하는 문제 해결
# .htaccess(apache), rewrite.conf(nginx) 규칙 수정
# bbs/page.php 추가

[일반] /page/filename.php
[테마] /theme/basic/page/filename.php

<a href="<? echo G5_BBS_URL ?>/page.php?pid=filename">페이지</a>


** 적용방법 **

# 아래와 같이 수정하고 첨부파일(shorturl.lib.php, .htaccess) 업로드하면 됩니다.
# v0.1.8 이후 common.lib.php 파일을 포함하지 않습니다.
# 회원분들마다 사용하는 그누보드 버전이 다르기 때문에 직접 수정하여 사용하세요.


# .htaccess(apache), rewrite.conf(nginx용은 코드는 다르나 내용은 동일함)

# -----------------------------------------------------------------------
# 짧은주소 사용여부를 설정합니다. (9 line 'true or false')
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_USE:true]

# -----------------------------------------------------------------------
# board 파일만 적용합니다. (15 line 'true or false')
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:false]

RewriteCond %{REQUEST_URI} !^/(adm|shop) [NC]
RewriteCond %{ENV:G5_SHORTURL_BOARD_ONLY} true
RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY_USE:true]

# -----------------------------------------------------------------------
# board 게시판명을 변경합니다. (25-27 line 'archive' 두 곳을 동일하게 변경하면 됩니다.)
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_NAME:archive]

RewriteCond %{REQUEST_URI} ^/archive/ [NC]
RewriteRule ^ - [E=G5_SHORTURL_BOARD_NAME_USE:true]

# -----------------------------------------------------------------------
# 특정 게시판을 제외합니다. (34 line 'bo_table' 여러개일 경우 사이는 | 로 구분하세요.)
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_EXCLUDE:bo_table]

# 이하생략..


# lib/common.lib.php (이용중인 그누보드 버전에 따라 라인수는 상이할 수 있습니다.)

// goto_url() 96 라인 변경
// $url = str_replace("&amp;", "&", $url);
$url = shorturl(str_replace("&amp;", "&", $url));


// alert() 158 라인에 1줄 추가
if (!$msg) $msg = '올바른 방법으로 이용해 주십시오.';

if ($url) $url = shorturl($url);


// confirm() 192 라인에 3줄 추가
if (!$msg) {
        $msg = '올바른 방법으로 이용해 주십시오.';
        alert($msg);
}

$url1 = shorturl($url1);
$url2 = shorturl($url2);
$url3 = shorturl($url3);

// html_process class 2474 라인 변경
// return $buffer;
return shorturl($buffer, true);


// 짧은주소 라이브러리 (하단에 추가)
include_once(G5_LIB_PATH.'/shorturl.lib.php'); 



## 무단전재 및 재배포 금지
## 이 코드를 사용하여 발생하는 모든 책임은 사용자에게 있습니다.
추천
14
  • 복사

댓글 228개

으아아아 ㅜㅜ
바로 오늘 아침에 1.0 버젼을 가지고 nginx rewrite 룰로 바꿔서 적용했는데 !!!
새버젼을 만드셧군요!!

고생정말 많으셧습니다.
혹시 bbs 폴더에 업로드해서 사용하는 사용자는 어떻해 수정해줘야하나요?
저건 루트에 올려놓고사용하는분들인거같은데....
그대로 적용하니 500에러가 나버리네요.
음.. 제가 이해가 안되서요.. 조금 더 자세히 설명해주실래요? ^^;
(이게 맞는지는 모르겠지만 루트/bbs/그누가 설치되어 있다는건가요..?)
방금 확인해보니 라이브러리 수정으로는 안되는거 같구요.
.htaccess 파일 두군데 bbs/를 더 붙여주면 정상적으로 작동하네요.

3 line RewriteBase /bbs/
27 line RewriteCond %{REQUEST_URI} ^/bbs/archive/ [NC]
저도 500에러 네요...
이전버전 잘 사용하고 있었는데 .htaccess 파일과 shorturl.lip.php 덮어쓰고 config.php에 두줄 삭제했는데 500에러 뜨네요 ㅜㅠ
혹시나 괜찮으시면 사용하고 있는 서버에서 테스트를 좀 해봐야될거 같은데
쪽지로 정보 알려주시면 확인해보겠습니다.
82라인에서

// 해당 파일에 맞는 조건을 거친 후 변환된 url을 받는다.
$url = call_user_func($this->callback, &$this->query, $matches[7]);

&$this->query 
여기에서 & 빼야 에러가 나지 않을듯합니다.

수정
// 해당 파일에 맞는 조건을 거친 후 변환된 url을 받는다.
$url = call_user_func($this->callback, $this->query, $matches[7]);
일단 500에러를 뿜는데 참조변수를 제거하거나 array로 감싸서 보내면 될듯 싶습니다. call_user_func 내에서 참조변수(&)는 오류를 뿜습니다.
http://fr2.php.net/manual/en/function.call-user-func.php

82라인에서
$url = call_user_func($this->callback, &$this->query, $matches[7]); 를
$url = call_user_func($this->callback, $this->query, $matches[7]);  로 변경하거나
$url = call_user_func($this->callback, array(&$this->query), $matches[7]); 로 변경하거나...

189라인에서
function render_bbs(&$query, $filename) { 를
function render_bbs($query, $filename) { 로 변경하니깐 정상적으로 나오네요.

7.0에서도 정상적으로 변환되는걸 확인했습니다^^
제로나라님, ceoseo님 댓글 확인 후 여러 버전의 서버에서 테스트를 진행해보았지만 문제가 발생하지 않았습니다.

그렇다고 제 코드가 맞다고는 이야기 할 수 없습니다. ㅜㅜ
다만 참조변수를 제거하거나 배열에 한번 더 감싸게되면
의도가 달라지기 때문에 알려주신 방법으로 사용하면 안될거 같습니다.
코드를 수정하여 정상적으로 작동하는것처럼 보이지만 아닙니다.
렌더과정에서 조건에 의해 query를 unset하겠지만 callback 후 구문처리시
query 변수는 참조되어 있는 상태가 아니기 때문에 그대로이고
불필요한 파라메타를 덧붙이게 됩니다.

해당 문제되는 부분은 이전 버전의 코드로 대체되었으니 확인부탁드립니다.
올려주신 0.2.1 버전을 적용시켜보니 정상적으로 잘 작동되네요^^
카페24 웹호스팅을 쓰는데 어떤 부분이 문제였는지 모르겠네요
잘된다고 하니 마음이 한결 가볍네요 ㅎㅎ
저도 카페24 테스트 해봤는데 운영중인 3곳이 다 잘되더라구요..
문제되는 환경에서 직접 테스트를 못해서 아쉽네요 ㅜㅜ
헤에.. 오랫만에 와서 짧은 주소 사용 하기 업데이트 하려구 햇는데 짧은주소 하시는 분이 생겻네요. ㅎㅎ
(파일이 2개뿐이라니.. 전.. 전부 수정햇엇는데.. 하나하나..)
혹시 특정 게시판만 제외할수도 있을까요?
그리고 archive 이것은 위의 내용을 보니 제외하면 좀 복잡해지는 모양이네요

그리고 배추베이직 게시판과는 충돌이 일어나는것 같네요. 본문에서...
특정 게시판 제외는 코드 추가로 충분히 가능하구요.

배추빌더를 받아보니 스킨내 자체적으로 경로를 짧게 처리한거 같더라구요.
그리고 b/폴더내 파일을 열어보니 header를 이용해서 파일을 읽네요..
빌더 기준으로 만든게 아니라서 시간날때 테스트 해보고 지원할께요 ^^
도메인/archive/notice/1 이런식으로 완성이 되던데 도메인/notice/1 이렇게는 안되나요?
아참 그리고 게시물 복사나 삭제하게되면 삭제나 복사는 정상적으로 되는데 페이지 새로고침
할때 없는 페이지로 넘어가던데 원래 게시판으로 남아있으려면 어떻해줘야하나요?
.htaccess 15라인에서
# -----------------------------------------------------------------------
# board 파일만 적용합니다. (15 line 'true or false')
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:false]를
RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:true]로

저는 이렇게 false를 true로 하니까 도메인/notice/1 이렇게 됩니다.
허당영님이 저보다 1분 더 빨리 적으셔서 제 글을 지웠구요 ㅋㅋ

게시물 복사, 이동은 테스트 진행하다 주석처리 했는데 깜빡했네요..
해당 부분은 확인 후 보안해서 다음버전에 반영할께요.
RewriteRule ^ - [E=G5_SHORTURL_USE:true]
RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:false]
RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY_USE:true]

지원되지 않는 플래그 때문에. 오류뜨는 게 위의 세 줄 이네요

다른것 규칙들도 x표가 뜨고 ㅠㅠ
잠깐 구글링해보니 fast cgi(environment variables)는 지원하는듯 합니다.
환경 변수를 등록하면 rewrite에서 {G5_SHORTURL_USE}로 사용이 되네요.

혹은

지금은 전체 적용, 게시판만 적용, 보드명 정의 등 여러 기능이 다 들어가 있는데
iis mod-rewrite에서는 원하는 기능의 규칙만 작성하면 문제없을거 같아요.

에러는 조건과 변수 때문이라 0.1.x 버전대의 규칙처럼 직접 적는다면 성공하실꺼예요.
옛날꺼에 비해서 엄청 간소해져서 좋네요.. 게다가 옛날거는 검색, 수정 등에 있어서 충돌 등 오류가 떠서 안되었지만 이거는 그런충돌이 없네요... 감사합니다!!!
게시글 목록에서 글삭제하면 홈페이지 메인으로 이동되는문제 어떻해 해야하나요?
다른 호스팅으로 이전해서 복구하니 이젠 지워지지도않고 그냥 삭제 누르면 홈화면으로 이동되버리네요.
해당 삭제하려는 게시물 눌러 삭제하면 삭제되는데 게시목록에서좀 삭제하고싶은데....삭제가 안되니
불편해죽겠네요..
config.php에서 짧은주소 사용여부를 false로 해도 같은 증상이 일어나는 것을 보니 짧은 주소를 사용해서 그러는 것은 아닌 것 같습니다.

제가 잘 모르지만 선택삭제 클릭 후 url값이 없을 경우 메인페이지로 이동하는 것 같습니다.
참고로 그 자리에 그대로 있게 하려면... 저는 tail.php에서 이렇게 수정하여 사용하고 있습니다.
<?php echo G5_BBS_URL ?>/login.php?url=<?=$urlencode?>

그리고 저도 게시물을 눌러 들어가서 삭제하면 삭제가 되는데 게시 목록에서는 삭제하면 삭제도 안 되고 메인으로 이동을 하네요~  흐미~ 뭔가 잘 못 되었네...ㅜ
이 또한 짧은 주소를 사용을 해서 그러는 것은 아닌 것 같습니다..
config의 상수는 제거되었고 .htaccess 파일의 환경변수로 대체되었습니다.

선택삭제는 정규식으로 파일을 체크하는 과정에서 문제가 생겼고,
복사와 이동은 구현되어 있었지만 주석 처리하고 배포했네요 ㅜ
해당 문제들은 0.2.2 버전에서 해결되었으니 확인바랍니다. ^^
감사합니다. 리스트에서 선택삭제가 잘 되고 메인으로 가지 않고 그 자리에 그대로 있습니다.
그런데 선택삭제를 한 후 링크주소에 마우스를 대보면 일시적으로 짧은 주소 이전의 긴 주소로 돌아갑니다.
물론 다른 게시판으로 이동하면 그 증상이 없어지기는 하지만...
xxx.com/archive/free/p1?sst=wr_num,wr_reply&page=1 이렇게 나온다는거죠?

선택삭제는 form submit -> delete_all.php 이동 후 삭제를 하게되는데
주소 뒤에 파라미터들이 붙는게 정상이지만 지우고 싶다면 가능합니다.

이 과정에서 파라미터 값 콤마를 인식하지 못하는 문제가 발견됬네요 ^^
사용하는 아파치 환경에 따라 에러가 발생할 수 있습니다.
대부분 환경설정 파일에서 기본 옵션으로 설정 되어있을텐데
아쉽게도 설정이 안되어있었나 보네요 ㅜㅜ

혹시나 다른분들도 towtow님과 같은 증상이 있을수도 있다는 생각에
해당 옵션 구문은 다음 버전부터 추가해서 배포하도록 할께요 ^^
대부분 서버 환경에는 심볼릭 링크를 허용하고 있어서
Options +FollowSymLinks 여기까지는 있거나 없어도 됩니다.

+SymLinksIfOwnerMatch 이 옵션으로 에러가 발생하는걸로 보이지만
의미가 링크 하고자 하는 사용자의 소유로 되어 있는 것만 링크 가능인데
재아님은 해당 디렉토리나 파일이 동일한 소유자가 아닌걸로 판단이 됩니다.
두 옵션이 있어도 상관은 없는데.. 자세한건 로그를 봐야 알 수 있을거 같네요.

웹호스팅에서 심볼릭 링크를 허용하지 않을 경우 같이 사용하라고 되어 있네요.
주의할 점은 SymLinksIfOwnerMatch 사용시 성능에 영향이 있다고 합니다.
(http://httpd.apache.org/docs/2.2/misc/perf-tuning.html#symlinks)

그러므로 다음 버전 배포시 아래와 같이 변경하려고 합니다.

Options +FollowSymLinks
# Options +SymLinksIfOwnerMatch

웹호스팅에서 허용하지 않을경우 주석을 해제하면 되게끔 말이죠 ^^;
board  false 시 문제 없이 작동합니다. 그런데

board 파일만 적용합니다. (15 line 'true or false')

true

적용했을시 링크가  http://도메인/bbs/board.php?bo_table=test&wr_id=308640

일때  해당 주소 클릭하면 http://도메인/test

게시판 게시글 보기로 넘어가지 않고 리스트로 그냥 넘어가버립니다.(리스트로 넘어 간다라기 보다는 wr_id는 짤려 전송안하고 bo_table만 넘어가는 것 같음)

 기존의 데이타 베이스 링크가 다 저런 형식이라 기존껄 다 변경하기 힘듭니다.

해당 문제 해결 방법이 있을까요???
여러번 확인해봐도 해당 증상은 보이지 않네요..
혹시나 괜찮으시면 제가 직접 테스트를 해봐야될거 같은데
쪽지로 ftp정보 알려주시면 확인해보겠습니다.

그리고 디비의 링크를 변경한다는게 무슨말인지요..?
f12 누르고 네트워크를 보면

http://도메인/bbs/board.php?bo_table=test&wr_id=308640

주소 그대로 넘어가는걸 확인되는데 실제 상단 주소에는  http://도메인/test  로만 찍히네요

http://도메인/test/308640 으로 접속하면 문제 없습니다.
기존 입력된 디비상에 http://도메인/bbs/board.php?bo_table=test&wr_id=308640  형식이라 클릭하면  http://도메인/test  리스트로 나오니 기존껄  http://도메인/test/숫자 변환해줘야 되는데...

이러면 작업량이 ㅜㅜ


http://demo.ignaz.net/bbs/board.php?bo_table=free&wr_id=24

위 링크를 클릭하면

http://demo.ignaz.net/free

로 리스트 페이지로 넘어가는 증상처럼 문제가 발생합니다. ㅜㅜ
해당 문제는 브라우저에 직접 입력했을경우 나타나는 증상이므로
수정된 버전은 데모페이지에 적용하였으며 테스트를 거쳐 배포할 예정입니다.

리다이렉트 되는 이유는 게시판 리스트에서 선택 복사, 선택 이동시
bbs/move_update.php 파일을 통해 자바스크립트의 구문으로 이동하는데
해당 페이지는 html_end가 없으며 짧은주소 라이브러리가 실행되지 않아
원래의 주소로 이동하게 되며 짧게 적용하기 위해 리다이렉트를 하였으나
자바스크립트에 대한 문제만 인지하고 테이블명만 확인하였네요.

하지만 디비상에 주소는 출력하면서 변환이 되었을텐데
towtow님이 직접 작업하실껀 없다고 생각합니다.
업데이트 되었네요 감사 ^^;

만약에요~.. 짧은주소를 사용하다가 중단을 했을경우에 기존의 짧은주소로 접속을 했을때의 방법은 어떻게 될까요??
흑흑 아미나 빌더를 사용하는데..
적용했더니 추천버튼도 작동을 안하고, 하단에 홈페이지 소개 버튼 등도 작동을 안하네요.
아무래도 순정 그누보드에서만 써야겠어요 ㅠㅠ
좋은 자료 감사합니다!
아무래도 빌더 기준으로 만든게 아니다보니.. 마음이 아프네요 ㅜㅜ
다음에 시간이 된다면 여러 빌더들을 설치해서 호환되게끔 해드릴께요.. ^^;
좋은 정보 감사합니다. 그런데...

22 // html_process class 2474 라인 변경
23 // return $buffer;
24 return shorturl($buffer, true);

다른건 다 했는데...
위 내용은 제 lib에는 없는데요... html_process class로 검색을 해야 안나오고..

return $buffer;로 검색하니 2곳이 나오는데요...변경해도 되는지 모르겠네요..

이것만 추가 하면 테스트 해볼수 있겠는데...도움좀 주세요
common.lib.php 파일은 그누보드 버전에 따라 라인수가 달라질 수 있습니다.
return $buffer;로 검색했을때 2곳중 아래와 같은 내용을 찾아 변경하시면 됩니다.


$buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript\n$1", $buffer);

// return $buffer;
return shorturl($buffer, true);
정말 하라는것 변경 다 했고 업로드 다 했는데....변화가 없네요. ㅠㅠ

다른 가능한 원인이 있을까요?
http://vonovo.com
좋은 팁 공개해 주셔서 감사드립니다.
작업하는 사이트에 적용해서 잘 사용중이었는데 이번에 서버 이전하면서 제대로 동작하지 않아서 이렇게 질문 글 드립니다.

구서버는 PHP 5.2.17 버전이었고 이번에 이전한 신서버는 PHP 7.0.6 버전입니다.

<?php echo G5_BBS_URL?>/board.php?bo_table=aaa 로 링크를 걸었을 때, 짧은 주소가 적용되어
http://도메인/aaa 로 잘 연결되고 이 부분은 구서버나 신서버 동일하게 잘 동작합니다.

하지만 리스트에서 게시물 뷰로 넘어가는 부분인
<?php echo G5_BBS_URL?>/board.php?bo_table=aaa&wr_id=1
위 링크가 구서버에서는  http://도메인/aaa/1 로 연결이 되는데 신서버에서는 짧은 주소가 적용되지 않습니다.

구서버의 모든 파일과 DB를 모두 이전한 상태이고
변경된 건 서버의 PHP 버전만 달라진 것 같은데 왜 이런 현상이 생기는 지 모르겠습니다.

도움 좀 부탁드립니다. (^^)(__)
PHP 7.0.6 버전으로 테스트를 진행해 보았지만 문제없이 작동하네요.
코드는 PHP 4.x 기준으로 제작되어 버전 문제는 아닌걸로 판단이 됩니다.

그러나 예상되는 문제로는 아래와 같습니다.

1. 루트에 board.php 파일이 있을 경우 해당 파일이 우선이므로 적용되지 않습니다.
2. 리스트가 아닌 최근게시물에서 증상이 나타난다면 캐시 문제일 가능성이 높습니다.
적용 방법이 좀 헷갈려서 그러는데요.
1. shorturl.lib.php 파일 업로드
2. .htaccess 파일 상기 내용과 같이 수정 후, 업로드
3. lib/common.lib.php 파일 수정

이렇게 하면 되는건가요?
테스트 결과 문제없이 작동하는걸로 확인이 됩니다.
댓글에 관련된 php, js파일을 확인해보니 해당 문구는 존재하지 않습니다.
다른 게시판 스킨을 사용하시거나 커스터마이징 과정에서 문제가 생긴게 아닌가 생각이 듭니다.
이전에 사용하던 호스팅에서는 아무런 문제없이 작동이 잘되었는데 호스팅을 다른곳으로 옮기고서 위증상이 발생하더라구요..
물론 위에 적용해놓은 .htaccess 파일을 제거하면 정상적으로 댓글이나 글수정등 잘되는데
그대로 다시 올리면 같은 증상이 발생하더라구요.
어떤파일 확인하시려는지 말씀해주시면 확인 후 알려드릴께요...
외부에서 접속이 안되기에 인프라망이다보니 내부에서밖에 접속이 안되네요.ftp는..
댓글에 관련된 파일들을 확인해볼려고 합니다.
그러나 외부 접근이 안된다면 확인할 방법이 없네요 ^^;

이전 호스팅에서는 루트/bbs 경로인걸로 알고 있는데
이번에 옮긴곳에는 바로 루트에 업로드 하신건 아닐까요?
네 이전에 root/bbs 사용했다가 bbs 없애고 root 에다가 올렸거든요.
새로 설치후 데이터만 옮겨서 새로 설치했는데 유독 작동이 안되더라구요...
그래서 짧은주소 적용된 .htaccess 빼면 정상적으로 작동이 되고...넣으면 또안되고..ㅠㅠ
그누파일 말씀하시는건가요? 댓글에 관련된 파일이라면?? 아님 게시판에서 사용되고있는 스킨을
말씀하시는건지...만약 게시판에 사용되고있는 스킨이라면 http://amina.co.kr/bbs/board.php?bo_table=skin_amina&wr_id=361&sca=%ED%95%84%EC%88%98 스킨 이용중에 있습니다.
이전 호스팅에서는 댓글 작성에 문제는 없었는지 다시 한번 확인이 가능할까요?

해당 빌더와 스킨을 다운받아 분석해보니 기본 코멘트가 아닌 빌더에서 별도로 만든걸로 확인이 됩니다.

댓글을 작성하면 ./write_comment_update.page.php 이동하게 되는데
파일명을 보시면 영문자[a-z]와 언더바[_] 외 점[.]이 포함되어 있네요.

.htaccess rewrite 규칙을 보면 제일 하단에

# 그 외 파일들 일괄 적용
RewriteRule ^([a-zA-Z0-9_]+) 영문자, 숫자, 언더바 외 허용하지 않으므로
RewriteRule ^([a-zA-Z0-9_.]+) 언더바 뒤에 점을 넣는다면 해결될거 같습니다.
알려주신 정보 토대로 적용해보니까 존재하지 않는 게시판입니다. 이렇게 출력이되네요..ㅠㅠ

# only board
RewriteCond %{ENV:G5_SHORTURL_BOARD_ONLY_USE} true
RewriteRule ^([a-zA-Z0-9_.]+)$ bbs/board.php?bo_table=$1 [L,QSA]
RewriteCond %{ENV:G5_SHORTURL_BOARD_ONLY_USE} true
RewriteRule ^([a-zA-Z0-9_.]+)/([0-9]+)$ bbs/board.php?bo_table=$1&wr_id=$2 [L,QSA]
RewriteCond %{ENV:G5_SHORTURL_BOARD_ONLY_USE} true
RewriteRule ^([a-zA-Z0-9_.]+)/p([0-9]+)$ bbs/board.php?bo_table=$1&page=$2 [L,QSA]

혹시나 싶어 RewriteRule ^([a-zA-Z0-9_.]+) 관련된거 다 똑같이해도 동일하게 존재하지 않는 게시판 입니다 나오더라구요.ㅠㅠ
그 부분이 아니라 [ # 그 외 파일들 일괄 적용 ] 주석 아래 코드들을 수정하세요.

수정을 해도 문제가 있는데 write_comment_update.page.php
.php 제외하면 .page가 확장자로 인식하기 때문에 생기는 문제로 보입니다.

현재 진행중인 프로젝트로 업데이트가 늦어지고 있지만
최대한 빠른 시일 내에 업데이트 하도록 할께요 ^^;
차후에 업데이트된 버전 나오면 적용해봐야겠네요...도저히 ignaz 님께서 알려주신대로 차근차근해도 전혀 진전이 없는거보면 ㅠㅠ 이전에 잘되던게 여기선 안되니 참! 난감하더라구용...아무쪼록 빠른시일내 나왔으면 좋겟네요^^
감사합니다. 잘되네요.

(혹시 ./ 으로 경로 잡혀있는 경우에는 방법 없나요?  예를들어 스크랩한 후,
<a href="./scrap.php">스크랩 확인하기</a> 의 경우에는 페이지 이동이 에러나더라구요.)
그누보드의 주소들은 대부분 상대경로로 잡혀있습니다.
문제가 되는 스크랩 페이지의 경우 조건에 걸리면 exit 종료되어
가장 중요한 html_process를 실행하지 못해 발생하는 문제입니다.

이전에도 선택이동 및 복사에서 이러한 문제가 생겨
.htaccess로 리다이렉트 하였지만 좋은 방법은 아닙니다.

해당 부분은 좀 더 생각해보고 업데이트 하도록 하겠습니다.
죄송하지만 질문 하나만 더하겠습니다.ㅠ
검색해보니 기존 사이트에 적용시 301 리다이렉트 해줘야 되는거 같던데,
어디에 붙여야 되는지 팁 좀 알 수 있을까요?
[L,QSA] 여기뒤에 전부 그냥  [R=301,L]을 붙이면 되는 걸까요?
질문에 대해 이해가 되지 않으니 좀 더 자세히 설명해 주시기 바랍니다.
무작정 redirect를 사용한다면 무한 루프에 빠지게 되므로 주의하셔야 됩니다.
제가 이부분을 잘 몰라서 질문도 이상한거 같네요ㅜ

질문요지는 게시판의 주소가 바뀌므로
봇이 주소가 바뀐걸 알 수 있도록
301리다이렉트를 적용해야 될 것 같은데,
방법을 알 수 있을까 하여 질문드렸습니다. ㅠ
PHP에서 모든 주소들을 짧게 변경한 뒤 html 코드로 출력하므로
봇은 원래의 주소가 아닌 짧은 주소로 인지하고 수집하기 때문에
별도로 리다이렉트 하실필요는 없습니다.
제가 확인 해보니, 제쪽에서 설정을 잘못잡았던것 같습니다.
write_update 시 수정한게 있었는데 그것 때문에 위와 같은 현상이 생겼더라구요
수정후 정상작동 됩니다. ^^
/archive/free 이렇게 말고

/free 적용했는데

/archive/free , /free 둘다 적용이 되는데 처음으로 /archive/free 이렇게 나와서 /archive/ 이것만 삭제 할려면 어떻게 해야지 되나요??
.htaccess 파일에서 G5_SHORTURL_BOARD_ONLY:false -> true로 변경하시면 됩니다.

# -----------------------------------------------------------------------
# board 파일만 적용합니다. (15 line 'true or false')
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:false]
게시판에서 검색시
?bo_table=TB_BOARD&sca=&sop=and&sfl=wr_subject&stx=검색어
이런식으로 되어 나오더라구요.
저만 해당되는 사항인가요? @_@
해당 부분은 모든 사용자들과 동일합니다.

아래에 보면 submit 할때 get방식으로 값을 넘기게 되어 있는데
이때 bo_table, sca, sop, sfl, stx 필드 때문에 주소뒤에 붙게 됩니다.

이 부분은 라이브러리로 조작하기에는 까다롭고 사용자마다 다르기 때문에 제외되었습니다.

간단히 해결할 수 있는 방법으로는 아래 코드를 참고하시면 됩니다. ^^

5가지 필드중
bo_table은 짧은주소 기능을 쓴다면 의미없이 넘겨주는 값이기에 조건 처리
sca, sop은 값이 존재할때만 넘겨주면 되므로 조건 처리


<!-- 게시판 검색 시작 { -->
<fieldset id="bo_sch">
    <legend>게시물 검색</legend>

    <form name="fsearch" method="get">

    <?php if (@getenv('G5_SHORTURL_USE') != 'true') { ?>
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <?php } ?>
    <?php if ($sca) { ?>
    <input type="hidden" name="sca" value="<?php echo $sca ?>">
    <?php } ?>
    <?php if ($sop != "and") { ?>
    <input type="hidden" name="sop" value="and">
    <?php } ?>

    <label for="sfl" class="sound_only">검색대상</label>
    <select name="sfl" id="sfl">
        <option>...</option>
    </select>
    <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
    <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="20">
    <input type="submit" value="검색" class="btn_submit">
    </form>
</fieldset>
<!-- } 게시판 검색 끝 -->
참좋은소스 감사

적용은 잘되는데 적용했다가 게시판이 안열려서 혼났네요 ㅋ
할수없 게시판 복사해서 다시만들었네요 ㅡ..ㅡ;;

뭐가 잘못된건지는 못찾았고요 ㅋ
짫은주소 사용시 urlencode(한글) 링크가 urlencode 처리되지 않는상태에서 넘기는것이 확인됩니다. 처리 방법 없을까요?

이문제로 카테고리 한글로 된 부분도 익스만  g5_write_water_cooling where ca_name = '����' and  형식으로 검색되어 카테고리 분류 클릭이 먹지 않는 증상이 있습니다.
구버전 익스라면 해당 부분에 문제가 있을것으로 예상됩니다.
라이브러리 117라인 rawurldecode를 지우면 해결될거 같습니다.
117라인 지우게 되면 도메인을 제외한 나머지 주소가 사라지는 문제가 있습니다.
일단
$url=urlencode($url);

처리 해주니 문제없어지긴 합니다만 체크 조금 더 해봐야겠네요
117번 라인을 return rawurldecode($url); -> return $url;

도메인을 제외한 나머지 주소가 사라진다는게 이해가 되지 않습니다만..
쿼리들은 http_build_query 함수 사용으로 문자들이 인코딩 되므로
제가 생각에는 굳이 urlencode를 사용할 필요는 없다고 생각됩니다.
그누 5.20 입니다.
정상적으로 설치를 다 했는데도 주소는 그대로입니다.
말씀하신 부분 이외에 따로 설정해야 할 부분이 있나요..??
영카트도 지원하기 때문에 적용이 안된다면..
다시 처음부터 차근차근 해보셨으면 합니다.
안될시 쪽지로 ftp정보 주시면 확인해드릴께요.
호스팅은 cafe24 입니다.

.htaccess 파일 상단에

# Rewrite Module
RewriteEngine On

을 적어 넣었더니 정상적으로 주소는 적용됐지만 해당페이지를 찾을 수 없다고 나오네요..

그리고 한가지 질문좀요^^
임의의 페이지(aa.php)를 만들어서 shop 폴더내에 넣었는데요..
이런 임의의 페이지도 적용되게 하려면 어떻게 해야 하나요.?
RewriteEngine On 구문을 직접 입력하셨다면
설명에 있는 코드를 복사 붙여넣기 한거 같네요.
첨부파일에 있는걸로 교체하시면 해결될거 같습니다.

임의의 페이지는 기존방식 그대로 작성하면 인식하고 변경됩니다.
<a href="<?php echo G5_SHOP_URL ?>/aa.php">aa</aa>
nginx 용 rewrite.conf 에 오류가 있습니다. 아래와 같이 수정해주세요.

rewrite ^/(profile|register_email)/([a-zA-Z0-9_]+)$ /bbs/profile.php?mb_id=$1 break;
->
rewrite ^/(profile|register_email)/([a-zA-Z0-9_]+)$ /bbs/$1.php?mb_id=$2 break;
이상하게 특정 문자로 시작하면요..
192.168.0.2에서 리디렉션한 횟수가 너무 많습니다. ERR_TOO_MANY_REDIRECTS 라면서 크롬에서 오류가 뜨네요.
url/board/photo로 접근을 했는데 게시판 생성을 해놓든 안해놓든 ph를 포함한 ph로 시작하면 리디렉션 오류뜨네요..
서버 문제인건지 .. 로컬 아파치서버 지웠다가 다시 설치해보고 리눅스 서버로 옮겨서 해봤는데도 똑같은 문제가 있는데 어디 코드가 문제인지 원인을 모르겠네요 -_-;;
라이브러리 코드에 문제가 있는게 아니라 크롬 브라우저의 버그로
너무 많은 리디렉션과 여러가지 복합적인 이유로 발생한거 같으며
해결 방법은 구글이 제시한 인터넷 사용 기록, 캐시, 쿠키 삭제 입니다.
해당 증상은 해외 포럼에서도 위와같이 해결한 사례가 많습니다.
HTML 소스 내에 만약 아래와 같은 부분이 있을 때 변환에 오류가 좀 있습니다. 혹시 해결방안이 있는지요?

<a href="http://abcd.com/bbs/banner_click.php?bn_id=67&url=http%3A%2F%2Fefgh.com%2Fpage%3Fmall_id%3Dttttt%26cm_id%3Dbbbbb" target="_blank">배너클릭</a>

--->

<a href="http://abcd.com/banner_click?bn_id=67&url=http://efgh.com/page?mall_id=ttttt&cm_id=bbbbb" target="_blank">배너클릭</a>

즉, urlencode 된 부분이 decoding 되어 재처리되다 보니, 전달되는 url 파라메타가 온전히 전달이 안되고, & 이전까지만 전달되는 문제입니다.
일단 서버가 2개인데요. 한개는 제대로 적용이 되는데요
다른하나가 적용이 안되는데.. 뭐가 문제인지를 모르겠습니다...
어떤 문제가 생겼는지 알아야 답변을 드릴 수 있을거 같아요 ^^;
지금으로서는 처음부터 다시 해보시는걸 권해드리고 싶네요!
아 위에 문제는 해결을 했는데요...
페이지에서 403에러를 뿜어버리네요 ^^:
주소http://xxx.xxx.xxx/page/?hid=go_guide - 페이지 주소입니다.
근데 현재 htaccess 에선 페이지 설정이 bbs.... 이런식인데요..
# 페이지
RewriteCond %{QUERY_STRING} pid=([^&]+) [NC]
RewriteRule $ bbs/page.php?pid=%1 [L,QSA]
RewriteRule page/([a-zA-Z0-9_-]+)$ bbs/page.php?pid=$1 [L,QSA]
이부분을 어떻게 수정해야 연결을 시킬수 있을지 알려주시면 감사하겠습니다..(__)
아.. 올려주신 파일에 bbs 안에 page.php 를 봤는데요.. 제가 사용중인게 빌더라... 그런거 같습니다.
빌더 page.php 랑 맞지 않는거 같아서 그런거 같습니다.. 사용중인빌더는 아니마빌더 입니다..
아니마 빌더에 맞게 htaccess를 수정하려면 어떻게 해야할지 조언좀 부탁드립니다.
아미나 빌더는 페이지 파라미터명이 hid로 되어있네요.

// .htaccess:104 line
RewriteRule ^page/([a-zA-Z0-9_-]+)$ bbs/page.php?hid=$1 [L,QSA] 

// shorturl.lib.php:241 line
$url .= $this->unset_query($query, array('co_id' => '/', 'hid' => '/'));
좋은 솔루션을 찾아서 반가운 마음에, 설치해보고 있는데, 이쪽은 문외한이라..
현재 첨부파일에는 .htaccess파일은 안들어있는거지요?

.htaccess 파일은 새로 만들어서 위에 본문에 있는 코드를 입력한 후 업로드하면 되는건가요?
그렇게 했는데 아무 변동이 없어서... 가비어 웹호스팅을 쓰고 있는데..
아~ 고맙습니다. 제가 맥을 사용하는데 숨겨진파일이 안보이게 되어 있어서 있는 줄을 몰랐군요~ 고맙습니다. ^^
아래쪽에 다른 코드들이 있었군요... 지금은 404에러가 떠서 열심히 찾아보고 있는 중입니다.
아무래도 가비아 웹호스팅의 문제인가? 하는 생각 중입니다.
가비아 호스팅에서도 문제없이 작동하는걸로 확인됩니다.
아니시면 FTP 정보 쪽지로 보내주시면 확인해드릴 수 있습니다.
찾았습니다. 제가 루트에 설치된게 아니라 board디렉토리에 설치가 되어 있어서 그랬더군요.
위에 댓글에서 방법을 찾아서 .htaccess에 수정을 했습니다.

3 line RewriteBase /board/
27 line RewriteCond %{REQUEST_URI} ^/board/archive/ [NC]

이렇게~ 고맙습니다. ^^
적용해보니 너무 잘되요. ^^ 감사합니다.
한가지 궁금한점이 있습니다.
게시판테이블이 test 일때 짧은 주소가 잘연결됩니다.
잠깐 실수로 루트에 test 폴더를 만들고 지웠는데..
그후 test 게시판이 짧은 주소로 연결되지 않습니다.
/test/게시물번호  이렇게는 연결되구요. /test 가 연결이 안되네요.
지워진게 맞아요. 서버 재부팅도 해서 확인해봤구요. 여러번해봐도 같은 결과에요.
게시판생성하면 짧은주소가 잘되는데.. 게시판테이블명하고 같은폴더 만들고 폴더지우면 그담부터 연결이 안되네요.. 참 이상한 현상이네요.ㅠㅠ
같은 방법으로 시도해보니 해당 증상이 발견되었으나
라이브러리 문제는 아니며 브라우저 캐시 문제로 확인됩니다.
subpage 내에서 외부로그인을 통해 로그인을 하게되면. 로그인이 되고 원래있던 페이지로 돌아가야하는데..
이렇게 페이지가 나타나는데요...
뒤로 돌아가기를 누르면 로그인은 되어있습니다...
어떻게 처리를 해야할런지.. 알려주시면 감사하겟습니다.
ssl 인증과 관련이 있는거 같습니다.. 처음은 주소http://sss.sss.sss.인데..
로그인처리후 https:// 로 바뀌면서 페이지를 찾을수 없는거 같습니다..
아.. 로그인후 https로 바뀌면서 짧은주소가 풀려버리네여...
해당 환경이 아니라서 정확하게 답변은 드리기 어려우나
https에서 rewrite가 적용되지 않을때 아래 코드로 해결하신 분들이 많네요.

# 디렉토리는 서버 기준입니다.
<Directory /home/wwwdir/public_html/>
AllowOverride All
</Directory>

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
아미나 빌더를 사용중입니다. 다 잘되고 너무 좋은데
한가지 문의사항이 있습니다.

아미나내에 스크랩기능과 게시물 블라인드 기능이 있습니다.

스크랩 xxx.com/tb/board_id/scrap_popin.php?bo_table=board_id&wr_id=1324
블라인드 xxx.com/tb/board_id/shingo.php?bo_table=board_id&wr_id=1324&act=lock
게시글신고 xxx.com/del/del_popin.php?bo_table=board_id&wr_id=1324

등인데요.
del/del_popin.php?bo_table=<?=$bo_table?>&wr_id=<?=$wr_id?>

위 처럼 링크가 걸려서 페이지를 찾지 못하는 현상이 발생합니다.
혹시 수정방법이 있는지요?
해당 빌더를 사용해보지 않아서 확답을 드리기는 어려우나 데모페이지 분석결과
스크랩, 블라인드, 게시글신고 등 apms_로 시작하는 JS 함수를 호출하여 처리하네요.
결과적으로는 짧은주소로 인해 함수내 상대경로가 달라져 페이지를 찾지 못하는거 같습니다.

가장 좋은 방법으로는 apms.js 파일을 수정하는건데
상대주소로 시작하는 경로들을 절대주소로 변경하는것이 좋을거 같습니다.
그누보드 JS 전역변수 g5_bbs_url를 이용하여 아래와 같이 수정한다면 해결될꺼 같네요.

var href = g5_bbs_url + '/shingo.php?bo_table=' + bo_table + '&wr_id=' + wr_id + '&act=' + act;
감사드립니다. 잘 해결하였습니다^^
테스트를 하면서 한가지 더 문제가 발생하였습니다.
아미나의 경우 일반댓글기능이 있고 ajax를 이용한 새로고침하지 않고 바로 등록하는 기능이 있습니다.

글 등록 부분은 위 var href로 고쳐주니 해결되었구요
삭제와 수정에서 문제가 있어

view.comment.page.php에서
댓글 수정 삭제 부분을 찾아

$list[$i]['del_href']  = './delete_comment.page.php?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token;
                $list[$i]['del_return']  = './view_comment.page.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&crows='.$crows.'&page='.$page;
$list[$i]['del_link']  = './delete_comment.php?bo_table='.$bo_table.'&amp;comment_id='.$row['wr_id'].'&amp;token='.$token.'&amp;page='.$page.$qstr;

이걸 야매로 .php란 확장자를 빼버리고 파일앞에 전체주소를 넣어버렸습니다.

                set_session('ss_delete_comment_'.$row['wr_id'].'_token', $token = uniqid(time()));
$list[$i]['del_href']  = 'https://xxx.com/delete_comment.page?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token;
                $list[$i]['del_return']  = 'https://xxx.com/view_comment.page?bo_table='.$bo_table.'&wr_id='.$wr_id.'&crows='.$crows.'&page='.$page;
$list[$i]['del_link']  = 'https://xxx.com/delete_comment.php?bo_table='.$bo_table.'&amp;comment_id='.$row['wr_id'].'&amp;token='.$token.'&amp;page='.$page.$qstr;
$list[$i]['is_edit']  = true;
                $list[$i]['is_del']    = true;

이렇게 고쳐주니 작동은 합니다^^
xxx.com을 url로 말고 어떤 주소에서도 작동하게
함수로 넣을수 있을까요? php를 전혀몰라서요ㅠㅠ;;;
PHP 구문에서는 G5_URL, G5_BBS_URL 상수를 사용하면 되고,
짧은주소는 shorturl 함수를 사용하면 변경되니 야매? 방법은 안쓰셔도 됩니다.

$list[$i]['del_href'] = shorturl(G5_BBS_URL.'/delete_comment.page.php?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token);
메일로 문의하셔서 nginx 설치하고 확인해보니 문제가 없네요.
마자아타님이 nginx.conf 파일 수정을 잘못하셔서 그런거 같습니다.

게시판 리스트는 짧게 변하는데 나머지는 안된다고 하셨자나요?
rewrite 규칙으로 리다이렉트 되었고 라이브러리는 동작하지 않았을꺼예요.

shorturl.lib.php 8~9 라인 주석 처리하고 동작한다면
shorturl 관련 환경변수 값을 가져오지 못한다는거죠.

첨부파일에 nginx.conf 적용방법을 적절히 수정해서 사용하셔야 합니다.
쇼핑몰 짧은주소 쪽에서 도메인/shop/list.php?ca_id=4030 이런식으로 붙는데요.
짧은주소를 적용할경우 잘나옵니다.
하지만 쇼핑몰 설정에서..
인덱스설정부분에
쇼핑몰의 접속경로를 http://도메인/shop 에서 http://도메인 으로 변경하시려면 사용으로 설정해 주십시오.
루트index를 사용을 하면..
쇼핑몰 상품페이지가 연동이 되질않는데요.. 어떻게 처리 하면 좋을지 알려주시면 감사하겠습니다.
빌더사용이라면 아미나 빌더 사용중입니다..
한가지더 있다면.. 주소가 도메인/shop/list/30 인 카테고리에서 게시판쪽인 도메인/archive/notice 로이동후
다시 상품쪽으로가클릭하면  도메인/list?ca_id=40 으로 주소가 바껴서 페이지를 잃어버리네욤..
영카트는 현재 위치가 /shop으로 시작하는지 체크하여 맞다면
짧은주소로 변환하기 때문에 해당 증상이 나타나는거 같네요.

급하신거면 146번 라인 주석처리 후 사용바라며 근본적인 해결방법은 아닙니다.
현재 진행중인 프로젝트가 많아 업데이트는 늦어질꺼 같습니다. ^^;
혹시 common.lib.php 외에 extend를 활용해서 사용할 방법은 없을까요?
그누보드 보안패치할때마다 초기화가 될까봐 ㅠ 확인을 계속 해야하니 ㅠ
common.lib.php 외에 shorturl.lib.php, .htaccess 파일이 있지만
순정과는 겹치는게 없어 보안패치 할때마다 초기화 걱정은 안하셔도 됩니다.
자료 감사합니다.
질문이 있는데요,

$G5_SHORTURL_BOARD_ONLY true;
로 설정하고, 필요한 부분만 짧은 주소 또 쓸수는 없을까요?

예를들어 보드 뿐만 아니라

도메인/register.php와
페이지 짧은주소
추가로 쓰고 싶습니다.

rewrite.conf 에서 여기저기로 옮겨봐도 적용이 안되네요.
shorturl.lib.php
도 건드려야 하는 듯한데 잘 안되네요 ㅠ


/archive/ 없앨려고 board_only true;를 적용했는데
딱 보드만 되고, 다른데는 짧은 주소가 안되네요 ㅠ
샵은 안쓰는데 방법 없을까요?


ps.
rewrite.conf에
if ($G5_SHORTURL_BOARD_ONLY = true) {
set $G5_SHORTURL_BOARD_ONLY_USE tr;
}

if ($request_uri !~ ^/(adm|shop)) {
set $G5_SHORTURL_BOARD_ONLY_USE "${G5_SHORTURL_BOARD_ONLY_USE}ue";
}

이렇게 true로 안들어가고 조금 이상하게 보이는 것이 있는데 원래 그런게 맞는건가요?
질문하신 내용은 2가지 파일을 수정하면 가능하고,
bbs와 shop은 별개라서 의미는 없을듯 합니다.

rewrite.conf에 true는 boolean이 아닌 string입니다.
nginx rewrite에서 중첩된 if문을 수행할 수 없기 때문에
변수에 문자를 이어붙이는 방식으로 작성했습니다.

직접 도움을 드리고 싶으나..
진행중인 프로젝트가 많아 간단한 답변만 드리고 갑니다. ^^;
시간적 여유가 된다면 다음 버전에 반영하도록 할께요.
다 적용을 했는데 ..아무반응도 없는건 뭘까요 ?? 링크는 다 원래대로 되고 있습니다 . 아파치 2.2 버전 php 5.3 사용을 하고 있습니다 ..서버는 centos 6.8 이구요..그누보드 5.2.6 버전 사용하고 있구요 ..아미나빌더 1.7.8 를 사용고 있습니다
CentOS 6.8 + Apache 2.2.15 서버에 있는 계정에 적용시켰더니  captcha 가 죽어버리네요
댓글을 모두 읽어봤지만 캡차(captha)가 죽었다는 내용은 아무도 없더군요 ㅜㅜ
다른 서버에는 정상적으로 주소가 줄어들던데 말입니다.  점검해봐야할 사항이 있을까요?
단정짓기는 그렇지만 여러번 확인해봐도 captcha와는 무관해보입니다.
치환하는 대상이 bbs, shop이기 때문에 plugin 폴더는 해당되지 않습니다.
처음으로 돌아가서 캡차가 정상적으로 동작하는지 확인 후 다시 적용해보시길 바랍니다.

혹시나 아래 문제가 있을 수 있으므로 확인해보시면 좋을꺼 같네요.
1. 서버에 GD 라이브러리 설치 확인
2. 브라우저 개발자모드를 통해 자바스크립트 오류 확인
음... .htaccess  없으면  captcha 정상 ,  있으면 액박 ... 그런 상황이네요

다른 계정에서는  500 에러때문에 사용 못했었다가, Options +FollowSymLinks 를 주석했더니 짧은주소 사용하게 되서 기분 좋았는데

같은 소스를 이용한 다른 서버에서는 짧은주소도 안되고, captcha 가 안되니 그 상태로 테스트도 못하겠고 ... 상심이 큽니다 ㅠㅠ

문제되는 서버에 계정하나 더 만들어서 여러가지 테스트를 해봐야 겠습니다.
잘 될지는 모르겠어요 ㅠㅠ  혹 문제가 해결되면 댓글 남기겠습니다.
아.. 제가 해당 환경으로 테스트 해보고 싶네요 ㅜ
일단 적용하면 짧은주소는 작동하던가요?? 아니면 둘 다 안되는건가요?
.htaccss 을 비롯한 세팅을 했을때 짧은 주소가 작동을 안했습니다.
비회원으로 확인하니 캡차가 액박이어서  .htaccess 를 제거 정상화를 시켯습니다.
서버환경: CentOS 6.8 + Nginx + PHP7 + MariaDB + 모든 페이지 SSL(https) 적용되어 있습니다.
제 서버만 이상한건지 비회원으로 비밀글 작성 후 비밀글 열람한 뒤 수정, 삭제를 누르면 404 not found가 떠버리
네요.

데모 페이지에서 비회원으로 비밀글 하나 작성하고 글 읽기나, 수정을 누르면
http://demo.ignaz.net/password/free/136?w=s
http://demo.ignaz.net/password/free/136?w=u
주소로 비밀번호 입력이 뜨는데,

제 사이트에서는 비회원으로 비밀글 하나 작성하고 글 읽기나, 수정을 누르면
https://도메인/password/qa/3?w=s
https://도메인/password/qa/3?w=u
똑같이 주소는 바뀌는데 404 not found 에러가 뜹니다 ㅜㅜ

근데 이상하게 주소
https://도메인/password/qa?w=u&wr_id=3  이런식으로 bo_table 뒤에 물음표(?)로 이어서 적으면 되긴 되네요...
근데 홈페이지 상 링크는 위에 처럼 되어 있어서..
원인이 무엇일까요?ㅜㅜ 최신버전 쓰고 있습니다.
제가 회사 이직하고 집 이사한다고 정신이 없네요 ^^;
시간나면 동일한 환경에서 테스트 해보고 말씀드릴께요.
자문자답인데, 제가 workaround로 해결한 방법은 다음과 같습니다.

/lib/common.lib.php 파일에서

--------98 번째 줄에

    $url = str_replace("&amp;", "&", $url);
 
----위 라인 대신 아래와 같이 수정함.

  if ( strpos($url, "password") ) {
      $url = str_replace("&amp;", "&", $url);
    } else {
      $url = shorturl(str_replace("&amp;", "&", $url)); 
    }
짧은 주소를 잘쓰고 있습니다.

http://m.blog.naver.com/ 이런식의 요청이 들어온다면
 
실제적으로 처리는 http://pro.blog.naver.com/  여기에서 처리한후에

유저에게 보여지는 도메인 주소는  http://모바일.blog.naver.com/ 

이런식으로 보여줄려고 하는데 RewriteRule 또는 RewriteMap 으로 처리가 가능한건가요?

할수 있다면 예제 좀 부탁드리겠습니다 ㅠ.ㅠ

만약 처리가 불가능 하다면 어떠한 방식으로 위와 같이 할수 있을까요?
짧은 주소를 제 컴퓨터에서 설치를 한후 적용시켜보고
실제 서버 ec2 아마존 리눅스에도 적용 시킬려고 하는데 적용이 되지 않습니다.
파일 등록후 아파치를 여러번 재시작해도 적용이 되지 않습니다.
아마존 서버에 rewrite 모듈은 설치된 상황이구요.

무엇 때문에 안되는지 정확히 찾을수 있는 방법이나
적용이 안되는 이유에 대해서 궁금합니다.
.htaccess 수정부분
# 페이지
RewriteRule ^page/([a-zA-Z0-9_-]+)$ bbs/page.php?hid=$1 [L,QSA]

아미나 빌더 사용하시는분 page.php 파일 수정한거 올립니다.

<?php
include_once('./_common.php');
define('_INDEX_', true);

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

$is_index = true;
$is_main = true;

// 루트 index를 쇼핑몰 index 설정했을 때
if(IS_YC && isset($default['de_root_index_use']) && $default['de_root_index_use'] && (!isset($ci) || !$ci)) {
require_once(G5_SHOP_PATH.'/index.php');
return;
} else {
if(USE_G5_THEME && defined('G5_THEME_PATH')) {
require_once(G5_THEME_PATH.'/index.php');
return;
}
define('IS_SHOP', false);
}

// Intro
if($config['as_'.MOBILE_.'intro_skin']) {
$is_intro = false;
include_once(G5_BBS_PATH.'/intro.php');
if($is_intro)
return;
}

include_once('./_head.php');

if(!isset($config['as_thema']) || !$config['as_thema']) {
echo '<br><p align=center>아미나빌더가 설치되어 있지 않습니다. <br><br> 관리자 접속후 관리자화면 > 테마관리에서 아미나빌더를 설치해 주세요.</p></br>';
} else {
if(IS_YC) {
if(file_exists(THEMA_PATH.'/index.php')) {
include_once(THEMA_PATH.'/index.php');
} else {
include_once(THEMA_PATH.'/shop.index.php');
}
} else {

$page_path = G5_PATH;
if (!file_exists($page_path.'/page/'.$hid.'.php')) {
alert('빠른 시일 내에 준비하겠습니다.');
}
else {
$page_href = G5_BBS_URL."/page.php?hid={$hid}";
include_once($page_path.'/page/'.$hid.'.php');
}

}
}

include_once('./_tail.php');
?>
짧은 주소를 모두 사용하면서
https://도메인/bo_table/wr_id 형식으로 쓸 수 없을까요?  중간에 archive 라던지 board 빼구요..
오랜만에 접속해서 답장이 늦었네요 ^^;
라이브러리를 수정하면 가능하지만 한가지 이슈가 있습니다.
bbs 폴더의 파일명과 게시판명이 동일하다면 문제가 발생하겠죠?
단 겹치지 않는다면 라이브러리와 rewrite를 수정해서 사용하면 됩니다.
저도 위와 같은 방법으로 홈페이지를 운영하고 있습니다.
경로에 있는 archive를 제거하기 위해서 아래와 같이 false -> true로 변경하였습니다.

# -----------------------------------------------------------------------
# board 파일만 적용합니다. (22 line 'true or false')
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_ONLY:true]

Not Found
The requested URL /bbs/aaa_board.php was not found on this server.

그러자 특정 게시판의 경우에만 이러한 현상이 발생합니다.
다만 해당게시판의 경우에만 archive/aaa_board 경로로는 접속이 됩니다.
이 경우에는 어떻게 해결해야 하는 것인지 알려주세요.
참고로 카페24 호스팅과 ssl 설치후 https 주소를 사용하고 있습니다.
짧은주소 잘 사용중입니다.
제 홈페이지에 여러 강좌를 게제중인데, 최근 이러한 문제에 접하게 되었습니다.

게시글 본문에 이런 내용을 적습니다.


        set_session('ss_delete_token', $token = uniqid(time()));
        $action = './delete.php?token='.$token;
        $return_url = './board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id;
        break;

내용을 작성후 저장하면 RewriteRule 이 적용되서 아래와 같이 도메인이 추가상태로 보입니다.

        set_session('ss_delete_token', $token = uniqid(time()));
        $action = 'https://www.happyjung.com/bbs/delete.php?token='.$token;
        $return_url = 'https://www.happyjung.com/bbs/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id;
        break;

수정에 들어가면 위의 정상적으로 내용이 보입니다.
RewriteRule 을 게시글 본문에는 적용안되도록 예외규정을 추가하는 방법이 있을까요?
좋은 팁 공유해주셔서 정말 감사합니다.

그런데 잘 바뀐 url로 나오긴 하는데(/bbs/게시판명)
그 url로 가도 무조건 메인페이지로만 가네요 ㅠㅠ
혹시 이 경우 조언해주실 게 있으실까요?

혹시나하여  v0.1.10 버전을 적용해보았는데도 동일합니다..

참고로 로컬에서 PHP버전 7.0.17이고 아파치 버전 2.4 입니다.

.htaccess안쓰고 httpd.conf 수정하였습니다.

아 그리고 .htaccess 위치는 documentRoot에다 두면 되는게 맞는거죠?
================================================================



아.. 해결한거같습니다..htaccess 를 documentRoot에다 두었고

httpd.conf에는 AllowOverride all를 선언하니까 목록, 상세페이지 잘되네요..

나머지 기능들 차근차근 테스트해봐야겠네요 ㅎㅎ

다시 한번 감사합니다
죄송하지만 다시 질문좀 드립니다..^^;

URL에 특정 string이 들어간 경우 짧은주소로 변환되지 않았으면 좋겠는데요.

아파치 rewrite룰에서 해당 룰을 추가해줘야할지.. short.lib.php에서 해당 작업을 해야할지 조언 부탁드립니다.

short.lib은 살펴보니 html 전체 덩어리에서 정규식 처리를 하는 것 같아서 어디다 해당 규칙을 해야할지 잘 모르겠네요..

RewriteCond %{REQUEST_URI} !^[a-zA-Z0-9_]+/view_history+&
아파치에서 위와같이 추가했는데 잘 안되네요..

/게시판명/view_history.php ... 이런 url일 경우 짧은주소에서 제외시키려고 하거든요..

조언 부탁드립니다.
감사합니다
느낌상 곧 다음버전이 나올 듯 하지만
그전에 적용하다 안되는 부분이 있어 염치불구하고 질문드립니다~

https://mydomain.com/archive/notice
https://mydomain.com/archive/notice/2
이런 식으로 목록과 글보기까지는 짧은주소가 잘 적용이 되고 있습니다.

그런데 글쓰기를 클릭하면
https://mydomain.com/archive/notice/write.php?bo_table=notice
이런 식으로 404를 뿜어냅니다.

주소창에 직접
https://mydomain.com/write/notice
을 입력해서 들어가면 해당 게시판의 글쓰기를 할 수 있는 것을 보면
htaccess에서 rewrite가 되지 않나 싶은데
아직 하수라서 더이상 진전이 없네요.
기존의 게시글을 수정할 때에도 동일한 증상입니다.
https://mydomain.com/archive/notice/write.php?w=u&bo_table=notice&wr_id=2&page=
이렇게만 나오고 404가 나옵니다.

덧글에는 해당되는 내용이 없어서 이렇게 질문드려봅니다~
혹시 다국어 사이트 때문에 en/폴더 , cn/폴더 그냥 루트엔 그누보드 깔았는데...그냥 루트는 잘 되거던요.. 근데 en 폴더안에 있는 그누보드는 안되서요..

혹시 다국어에 따른 en 이나 cn 를 어떻게 추가해야하는지 알려주실순 없으실까요?
ignaz님의 짧은주소 잘 적용은 된거 같은데요.

만약  공지사항 게시판을 들어가면

 test.co.kr/archive/notice?me_code=6040

이렇게 뒤에 ?me_code=6040가 찍힙니다.

근데  test.co.kr/archive/notice 이렇게 해도 들어가긴 들어가져요.

저는  test.co.kr/archive/notice 이거를 하고 싶은데

공지사항 메뉴를 누르면  test.co.kr/archive/notice?me_code=6040 이렇게 나옵니다;;;

방법이 없을까요???
5.3 에서 잘 동작합니다.만.. 몇몇 url 은 수정해줘야 하네요...
아직 다른건 확인 못했고요..
bbs 폴더 view.php 소스 마지막에서
//검색이면
$search_href = './board.php?bo ............... 를
$search_href = G5_URL.'/board.php?bo.......... 로 바꾸고요
$list_url 도 같은 방식으로 변경
쭉 아래
//이전글링크
.....
$prev_href = './board.php?bo_table='.$bo_table.'&amp;wr_id='.$prev['wr_id'].$qstr;
이걸
  $prev_href = G5_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$prev['wr_id'].$qstr;
이라고 바꿔야 동작하고요

다음글 링크도 마찬가지로 ./board 를 위처럼 바꿔야하네요...

다른건 찾는대로 올릴께요
저의 경우는 비로그인 상태에서 비밀글 읽기 할때만 오류가 뜨더군요
다른 경우는 문제없이 잘 작동하고 있습니다.
G5_URL 이 아니라 G5_BBS_URL 을 적여야 하는거 아닌가요?
이것 저것 수정 많이 해야하네요.. ㅠ.ㅠ 댓글 쓸때도.. 여튼 소스안에 url이 ./ 이라고 되어 있으면 모조리 수정해야 합니다.. 기본 url 이 /archive/ 이기 때문에... ㅠ.ㅠ
초보라서 수정해서 쓰기가 어렵겠네요 혹시 php7.2환경에서 그누보드 5.3에서 사용하시면서 위 파일 수정해서 쓰시는분 계실까요?
도에인주소/archive/freeboard/1 이런식으로 나옵니다만 archive 를 없애는 방법이 궁금합니다.

또한 짧은주소 사용시 seo 노출에 영향이 미치는지 궁금합니다. 감사합니다.
.htaccess 파일

# -----------------------------------------------------------------------
# board 게시판명을 변경합니다. (25-27 line 'archive' 두 곳을 동일하게 변경하면 됩니다.)
# -----------------------------------------------------------------------

RewriteRule ^ - [E=G5_SHORTURL_BOARD_NAME:archive]

RewriteCond %{REQUEST_URI} ^/archive/ [NC]
RewriteRule ^ - [E=G5_SHORTURL_BOARD_NAME_USE:true]
그누보드 5.3.1 이구요

게시판주소

http://poto.ytb.kr/archive/news2_1/12  이렇게는 정상인데

글쓰기를 하면
http://poto.ytb.kr/archive/write.php?bo_table=news2_1  이렇게 나오면서 404에러나요

 

목록보기를 해도 404 에러가 나요 아래 처럼 나오면서

http://poto.ytb.kr/archive/news2_1/board.php?bo_table=news2_1&page=

 
common.lib.php 파일은 전혀 안건드린 상태고요

잘몰라서요 ㅡ,.ㅡ;;;
5.3.1 에서 비회원에서 비밀글을 클릭하면 아래와 같이 에러가 뜨네요
도메인/게시판이름/password.php?w=s&bo_table=게시판이름&wr_id=게시글번호

글쓰기/보기/댓글 등은 이상없는데, 비밀번호 체크하는 로직에 오류가 ㅜㅜ
도메인 여러개를 사용할 경우
관리자 > 환경설정 > 메뉴설정페이지에서(menu_list.php)
메뉴                        링크                                                새창 ......
회사소개              /bbs/content.php?co_id=company            사용안함
개인정보처리방침    /bbs/content.php?co_id=privacy              사용안함
이러한 형태로 사용을 해야 앞부분에 도메인이 자동으로 붙어서
도메인/bbs/content.php?co_id=privacy 이런형태로 보여집니다.

이런식으로 관리자에서 입력시
class html_process { 클레스의 영향으로
메뉴                      링크                                                    새창...
회사소개            도메인/content/company                          사용안함
개인정보처리방침  도메인/content/privacy                            사용안함
이러한 형태로 변경되어서 보여집니다.
이부분에서 만약 확인을 눌러버린다면 다시 한번 메뉴를 설정해야 할 수도 있겠지요

이러함을 방지하기위해서
common.lib.php 2502줄 정도(?) (버젼마다 차이가 있을 수 있습니다.)
return $buffer 부분을 return shorturl($buffer, true); 이렇게 바꾸면 안되고 if문을 걸어줘야 합니다.

저는
if(strstr($_SERVER['PHP_SELF'],"adm")) Return $buffer;
else return shorturl($buffer, true);

이렇게 변경을 하여서 관리자 페이지에서는 짧은 주소가 안되게끔 해두었습니다.
참고하시면 좋을 듯 하여 적습니다.
php5.3에서 테스트했을때는 오류가 여러가지 있었는데.. 
php7이상에서 그누보드 5.2.9.8.4 아미나테마로 1.7.27 로 적용해보니 view.php 에서 주소 부분 전부
G5_BBS_URL.'/ 이런식으로 변경해보니 기능들은 잘 작동이 되는거 같습니다.
한가지 오류가 댓글 등록시 '올바른 방법으로 이용해 주십시오' 이 문구만 노출이 되고
등록되지 않는 문제가 발생하는데.. 
write_comment_update.php 파일에서 아래 부분을 보면 토큰 문제로 그렇게 출력되는건가요?
if(!trim($_POST['token']) || !$comment_token || $comment_token != $_POST['token'])
    alert('올바른 방법으로 이용해 주십시오.');

php는 문외한이라..  이 부분 해결 가능한 방법이 있을까요?
자답:
아랫부분을 주석처리하면 정상작동되는데..  이 부분을 지우면 문제가 생기나요??;;;
if(!trim($_POST['token']) || !$comment_token || $comment_token != $_POST['token'])
    alert('올바른 방법으로 이용해 주십시오.');
저도 한번 해봤는데요.
대박~ 길던 주소가 단번에 짧아지니.. 보니 좋네요.
제 나름의 팁을 전하자면요.

라인수 보고 위에서 부터 했더니.. 밑으로 갈수록 더 라인수 맞추기가 헷갈리더라구요.
그래서 전 밑에 // html_process class 2474 라인 부터 위로 변경했습니다.
죄송하지만 이거 적용을 어떤식으로 해야 하는건가요? 설명을 봐도 모르겠는데 Root파일에 .htaccess을 붙여 놓고 서버 재실행하고 시도해 봐도 url이 그대로 길게 나오는데 어떻게 어떻게 적용해야 하는지요?
저는 쪽지가 안뜹니다..

사이트주소/memo 로 자동 치환되서 나오는데

사이트주소/bbs/memo.php 로 쳐보면 정상접속되는 데 단축url때문에 뭔가 꼬인거같아요..ㅠㅠ
© SIRSOFT
현재 페이지 제일 처음으로