테스트 사이트 - 개발 중인 베타 버전입니다

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

우성짱 5년 전 조회 2,478

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

 

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

 

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

 

왜냐하면 

 

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

 

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

 

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

 

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

 

</p>

<p>#### 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 #####</p>

<p>

 

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

 

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

 

https://caddy.community/t/rewrite-apache-nginx-rewrite-block-to-caddy-for-gnuboard-5-4/9009">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. 안되는 것 짧은 주소 설정시 - 글 수정 버튼을 누르면 새글쓰기로 됨

 

---

 

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

 

문제의 코드는 

 

</p>

<p>@write path_regexp write ^/([0-9a-zA-Z_]+)/write$

rewrite @write /bbs/write.php?bo_table={re.write.1}&rewrite=1</p>

<p>

 

이것인데요.

 

https://example.com/free/write?w=u&wr_id=28&page=" rel="nofollow noopener" target="_blank">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=" rel="nofollow noopener" target="_blank">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개

채택된 답변
+20 포인트
5년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

우성짱
5년 전
대박입니다. 잘 되네요!!!!!!!!! 대박!!!!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인