Caddy 2 전용 그누보드 5.4 짧은주소 rewrite 정규식 문의드립니다.

Caddy 2 전용 그누보드 5.4 짧은주소 rewrite 정규식 문의드립니다.

QA

Caddy 2 전용 그누보드 5.4 짧은주소 rewrite 정규식 문의드립니다.

본문

그누보드 5.4는 짧은주소 기능을 지원하고 있습니다.

 

아파치와 Nginx, 오픈라이트스피드 웹서버에서는 완벽하게 작동하고 있습니다.

 

하지만 Caddy 2 웹서버에서는 작동하지 않습니다.

 

왜냐하면 

 

https://caddyserver.com/docs/caddyfile/directives/rewrite

 

https://caddyserver.com/docs/caddyfile/matchers

 

위와 같이 문법이 다르기 때문입니다.

 

우선 아파치와 Nginx의 리라이트 규칙을 봅시다.

 


#### gnuboard5 apache rewrite BEGIN #####
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^content/([0-9a-zA-Z_]+)$  bbs/content.php?co_id=$1&rewrite=1  [QSA,L]
RewriteRule ^content/([^/]+)/$  bbs/content.php?co_seo_title=$1&rewrite=1      [QSA,L]
RewriteRule ^rss/([0-9a-zA-Z_]+)$  bbs/rss.php?bo_table=$1        [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)$  bbs/board.php?bo_table=$1&rewrite=1      [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1      [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/write$  bbs/write.php?bo_table=$1&rewrite=1    [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$  bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1  [QSA,L]
</IfModule>
#### gnuboard5 rewrite END #####
#### gnuboard5 nginx rules BEGIN #####
if (!-e $request_filename){
rewrite ^/content/([0-9a-zA-Z_]+)$ /bbs/content.php?co_id=$1&rewrite=1 break;
rewrite ^/content/([^/]+)/$ /bbs/content.php?co_seo_title=$1&rewrite=1 break;
rewrite ^/rss/([0-9a-zA-Z_]+)$ /bbs/rss.php?bo_table=$1 break;
rewrite ^/([0-9a-zA-Z_]+)$ /bbs/board.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/write$ /bbs/write.php?bo_table=$1&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([^/]+)/$ /bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;
rewrite ^/([0-9a-zA-Z_]+)/([0-9]+)$ /bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;
}
#### gnuboard5 nginx rules END #####

 

위 리라이트 규칙은 그누보드 관리자화면에서도 확인할 수 있습니다.

 

그래서 Caddy 2용으로 변경하기 위해 캐디 2 커뮤니티에 질문을 올려서 답변을 얻었습니다.

 

https://caddy.community/t/rewrite-apache-nginx-rewrite-block-to-caddy-for-gnuboard-5-4/9009

 

추가로 님의 도움으로 새글작성까지 문제없이 적용완료했습니다.

 


# gnuboard rewrite rules
@content path_regexp content ^/content/([0-9a-zA-Z_]+)$
rewrite @content /bbs/content.php?co_id={re.content.1}&rewrite=1
@title path_regexp title ^/content/([^/]+)/$
rewrite @title /bbs/content.php?co_seo_title={re.title.1}&rewrite=1
@rss path_regexp rss ^rss/([0-9a-zA-Z_]+)$
rewrite @rss /bbs/rss.php?bo_table={re.rss.1}
@board path_regexp board ^/([0-9a-zA-Z_]+)$
rewrite @board /bbs/board.php?bo_table={re.board.1}&rewrite=1
@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1
@seo path_regexp seo ^/([0-9a-zA-Z_]+)/([^/]+)/$
rewrite @seo /bbs/board.php?bo_table={re.seo.1}&wr_seo_title={re.seo.2}&rewrite=1
@id path_regexp id ^/([0-9a-zA-Z_]+)/([0-9]+)$
rewrite @id /bbs/board.php?bo_table={re.id.1}&wr_id={re.id.2}&rewrite=1


현재 이렇게 설정했습니다.



1. 되는 것

짧은 주소 게시판 바로가기(숫자, 한글표시 그대로)
짧은 주소 게시글 바로가기(숫자, 한글표시 그대로)
짧은 주소 내용관리 바로가기(숫자, 한글표시 그대로)
/bbs/content.php?co_seo_title 형태 연결 (내용관리 SEO 제목 연결)
/bbs/board.php?bo_table=$1&wr_seo_title= (게시판 SEO 제목 연결)
/bbs/rss.php?bo_table 형태 연결 (RSS 게시판 제목 연결)
짧은 주소 글쓰기 - 게시판 목록에서 글쓰기 버튼 누르면 새글쓰기 잘 됨

2. 안되는 것

짧은 주소 설정시 - 글 수정 버튼을 누르면 새글쓰기로 됨

 

---

 

이제 마지막 관문입니다. 글 수정 버튼을 눌렀을 때 실제로 수정이 되어야합니다.

 

문제의 코드는 

 


@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1

 

이것인데요.

 

https://example.com/free/write?w=u&wr_id=28&page=

 

위와 같은 규칙으로 들어왔을 때

 

https://example.com/bbs/write.php?w=u&bo_table=free&wr_id=28&page=

 

위와 같이 변환이 되어야 합니다.

 

하지만 그렇게 되지 않고, 새글 작성으로 넘어가더라구요.

 

아무래도 ?w=u&bo_table=free&wr_id=28&page= 이 부분이 무시되는 것 같습니다.

 

이것만 잡으면 Caddy 2용 리라이트 규칙을 완성할 수 있습니다.

 

도와주세요!

이 질문에 댓글 쓰기 :

답변 1

@write path_regexp write ^/([0-9a-zA-Z_]+)/write$
rewrite @write /bbs/write.php?bo_table={re.write.1}&{http.request.uri.query}

답변을 작성하시기 전에 로그인 해주세요.
전체 220
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT