짧은주소 사용시 접속로직이 궁금합니다.
본문
안녕하세요.
짧은 주소를 사용해서 페이지에 접속을 할때 어떤 로직으로 최종페이지까지 접속이 되는지 설명을 부탁드립니다.
게시물을 기준으로 글이름 짧은 주소는,
"도메인.com/게시판명/글이름(wr_seo_title)" 형식으로 되어 있습니다.
일반 주소는 "도메인.com/bbs/board.php?bo_table=boardname&wr_id=123" 의 형식입니다.
게시판 설정에서 짧은 주소를 선택하면, g5_config 테이블의 cf_bbs_rewrite 에 선택번호(글이름의 경우 2)가 저장이 됩니다.
이까지가 설정저장 부분인거 같은데, 이렇게 설정이 되었을때,
짧은 주소로 접속이 이루어 지면, 어떤 로직과 어떤 파일, 함수 등을 참조해서, 최종 게시물에 도달하게 되는지 궁금합니다.
도움 주실수 있으신 고수님이 계시면, 좀 자세히 설명을 부탁드립니다. 제가 그누보드에 익숙하지 못해서요.
감사합니다.
답변 3
그누보드에는 router가 없습니다.
.htaccess 파일에 정의된 rewrite 룰에만 의존하여 처리됩니다.
rewrite 룰에 의해서 각 파일로 직접 요청을 변경하여 처리되고, 그누보드의 코드에서는 rewrite를 처리하지 않습니다.
seo_title로 접근시에는 아래 코드에서 글을 찾습니다.
https://github.com/gnuboard/gnuboard5/blob/d28be441088e53f3c38b66ba4327938cee24d0d2/common.php#L591
그누보드에서 짧은 주소를 사용하는 경우, 먼저 아래 파일들이 참조됩니다.
- /bbs/seo.inc.php
- /bbs/rewrite.php
- /bbs/zmSpamFree.php
seo.inc.php 파일에서 다음과 같은 로직으로 접속됩니다.
- 접속한 짧은 주소를 기반으로 도메인과 테이블명, 글이름을 각각 분리합니다.
- 글이름을 기반으로 상세 게시물을 찾기 위해서 g5_write_테이블명 테이블에서 wr_seo_title 칼럼의 값과 비교합니다.
- wr_seo_title 칼럼의 값과 일치하는 게시물이 있을 경우, 해당 게시물의 wr_id 값을 찾고, 해당 wr_id 값을 기반으로 상세 게시물 페이지로 리다이렉트 합니다.
상세 게시물 페이지로 리다이렉트 되기 전에, zmSpamFree.php 파일에서 글이름과 관련된 로직이 실행됩니다.
그리고 마지막으로, rewrite.php 파일에서 글이름과 관련된 로직이 실행됩니다.
정확한 건 아닌데, 제 생각에 이 순서대로 동작할 듯 합니다.
- 사용자가 짧은주소로 서버에 요청
- /.htaccess 파일 통해 웹서버가 해당 주소에 대응하는 실제 주소 검색
- /서버에서 해당 주소에 맞는 데이터 가져옴
- /.htaccess가 해당 주소를 다시 짧은주소 형태로 변환
- /사용자에게 해당 정보를 전달
더 자세한 건 공부해 봐야 되나서...ㅎ