웹마스터 팁

1. 숫자 문서의 짧은 주소 문제

http://abc.com/wiki/entry/Front_Page 처럼 문자로만 이루어져있거나

http://abc.com/wiki/entry/XE_1 처럼 숫자 + 문자가 혼합된 경우에는 짧은 주소가 아무 이상 없이 동작하나

 

http://abc.com/wiki/entry/123 과 같이 숫자로만 이루어진 문서의 경우 404 에러만 뜨는 문제가 있습니다.

http://abc.com/index.php?mid=wiki&entry=123 과 같이 짧은 주소가 아닌 경우에는 정상 동작하고요.

 

문제의 원인은 Rewrite Rule입니다.

nginx 기준으로 

# vid + mid + document link
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?vid=$1&mid=$2&document_srl=$3 last;

# mid + entry title
rewrite ^/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?mid=$1&entry=$2 last;

 

이 부분이 있는데,  vid + mid + document 형태의 짧은 주소를 처리하는 부분 때문에 발생하는 문제입니다. 문서명이 문자나 문자와 숫자 혼합시에는 세번째 [0-9] 부분에 해당되지 않기 때문에 이 부분은 건너뛰고 다음에 위키용 짧은 주소를 처리하는 부분으로 넘어가는데 문서명이 숫자로 이루어 진 경우에는 저기에 걸려버려서

 

http://abc.com/index.php?mid=wiki&entry=123 이 아닌 http://abc.com/index.php?vid=wiki&mid=entry&entry=123 로 처리를 해버리는 관계로 발생하는 문제입니다.

 

해결법은 단순히 

 

# mid + entry title
rewrite ^/([a-zA-Z0-9_]+)/entry/(.+)$ /index.php?mid=$1&entry=$2 last;

# vid + mid + document link
rewrite ^/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)$ /index.php?vid=$1&mid=$2&document_srl=$3 last;

 

이 둘의 순서만 바꿔주셔도 간단하게 해결됩니다.

---

2. 미디어위키 문법 사용 시 내부 링크 문제

 

XE 위키에서 미디어위키 문법을 적용하여 사용 (그냥은 안되고 https://www.xpressengine.com/forum/22080538 이 방법대로 수정 필요)시 내부 링크 기능에 문제가 있었습니다.

 

짧은 주소 사용시 기준으로 http://abc.com/위키모듈/entry/문서명 으로 연결이 되어야 하는데, 링크에 문제가 있어서 위키 메인 등에서 내부 링크를 클릭시 http://abc.com/문서명 로 연결이 되버리는 문제였죠.

 

https://www.xpressengine.com/22209922 이 글처럼 임시 방편으로 바로가기를 이용하는 방법이 있지만 위키 스킨에서 위키 메인으로 이동한다거나 하면 다시 문제가 재발하는 문제가 있었습니다.

 

원인은 미디어위키 문법 파서에 있는데 파.싱을 통해 링크를 만들어주는 과정중에 [[내부 링크]] 형태로 링크가 걸렸으면 '내부 링크' 에 해당되는 부분을 $content로 넘겨주고 여기서 다시 공백이 있을 경우 공백을 _로 바꿔 '내부_링크' 형태로 만들어 $href에 넣어준 뒤 다른 작업을 거쳐 마지막에 <a href=\"$href\" 형태로 넘겨주다보니 발생하는 문제입니다.

 

해결방법은 위키 모듈 폴더로 들어가 /lib/MediaWikiParser.class.php의 335번째 줄 다음에

 

// 내부 링크 버그 수정.
else
{
     $href = getUrl('mid', Context::get('mid'), 'entry', $href);
}

 

를 추가해주시고 저장, 적용해주시면 해결됩니다.

 

제목 글쓴이 날짜
XE위키 모듈: 숫자 문서의 짧은 주소 문제와 미디어위키 문법 사용시 내부링크 문제 해결하기 Gunmania 2016.02.12
가상사이트 페이지별 개별 레이아웃 적용하기 Xiso 2016.01.31
warning: call time pass by reference 에러 해결 방법 [6] ezi 2011.07.28
리눅스 10원짜리 팁 - history 명령어 응용 paraduxx 2016.01.12
리눅스 10원짜리 팁 - 탭 키 쓰십니까 ? paraduxx 2016.01.12
회원가입폼 기본항목에 안내문구 넣기 paraduxx 2016.01.11
XE와 마인크래프트 서버 화이트리스트 연동하기 [9] file 연가시먹었다 2012.08.25
일반 게시판에서 익명 선택하여 작성하기 [2] POWERXE 2015.12.27
메뉴활성화에 따라 원하는 위치에 레이어 넣고 바꾸기.. 왼쪽 플래시 메뉴 메뉴따라서 바꾸기 [4] 만쓰별(정만) 2009.01.24
비밀글 이여도 갤러리나 웹진형에서, 썸네일이나 요약 부분이 나타나게 수정하려면.. sejin7940 2015.12.23
상단에 스르르~ 닫기 가능한 배너 달기 [30] file 야옹잉 2014.06.20
빠른 글 쓰기: 메인 페이지에서 글 쓰기 [1] file 윈컴이 2015.12.09
통합검색 기능에 권한 적용하기 (완전 차단 필요할 때) [9] file 모노소프트 2012.04.30
관리자만 볼 수 있는 로그인 기록 페이지 만들기 퍼니엑스이 2015.12.07
rsync 와 ssh root 접속을 막고 인증키로만 백업하기 마루디자인 2015.11.25
리눅스 백업 1.0 ibin 2015.11.23
이제는 유튜브동영상 손쉽게 다운로드 받으세요 ミ:つÞ [7] 딴죽을거는남자 2015.11.02
파시ㅇ 예제입니다. [3] file 유창화 2015.11.12
CentOS PHP TS/NTS 모드 설치 방법 마루디자인 2015.11.09
글 수정일때만 업데이트 아이콘이 뜨게 하고 싶은 경우 ( 댓글 입력시에는 별도로 안 뜨고) sejin7940 2015.11.01