웹마스터 팁
XE위키 모듈: 숫자 문서의 짧은 주소 문제와 미디어위키 문법 사용시 내부링크 문제 해결하기
2016.02.12 19:07
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);
}
를 추가해주시고 저장, 적용해주시면 해결됩니다.
댓글 0
제목 | 글쓴이 | 날짜 |
---|---|---|
index.php에서 Parse Error가 발생한다면 [6] | YJSoft | 2014.04.01 |
게시판이 있는데 관리자 페이지에 나타나지 않을 경우 해결 방법 | 퍼니엑스이 | 2016.03.20 |
XE 루트로 옮기기 완벽 가이드 [/xe/ 로부터 벗어나자!] ver 1.1 [107] | LI-NA | 2013.02.26 |
기본 Content 위젯에 댓글 New표시하기 [10] | 조슈아킴 | 2010.05.08 |
에디터 비활성화 문제 해결했습니다! [2] | 엘로이스 | 2013.09.13 |
1.8 XEDITION 에서 로그인xe 사용하여 네이버 로그인 연동하기 [7] | karutian | 2015.04.10 |
CSS + HTML 메뉴 | 마루디자인 | 2016.03.10 |
호스팅 변경이나 이전시 썸네일 문제 점검사항 | 맥노턴 | 2016.03.07 |
[속도 향상] 불필요한 애드온 끄기 | 다미아빠 | 2016.03.06 |
외부 이미지 저장 애드온 [7] | samsara | 2013.03.26 |
서버의 파일권한 맞추기. | 마루디자인 | 2016.03.01 |
외부페이지에서 매개변수 사용하기 [2] | JnCsoft | 2008.04.07 |
외부 페이지에서 XE 기능을 추가 할때 | 410contents | 2016.02.25 |
PHP7에서 XE설치시 텍스트 다 깨져서 나올 때 | 꼬부기 | 2016.02.23 |
CentOS 6.x 에서 OpenSSL Heartbleed 취약점 업데이트 | 마루디자인 | 2016.02.23 |
댓글에 대댓글 달리면 수정 불가능하게 하기 [8] | 불금 | 2015.06.17 |
Linux(CentOS) APM 컴파일 설치 (중급) [1] | rwind | 2016.02.01 |
(포인트) 레벨별 포인트 계산 기능 추가 [4] | Simulz | 2007.11.19 |
(CSS) IE8용 웹조각 기능 | Simulz | 2009.03.26 |
XE위키 모듈: 숫자 문서의 짧은 주소 문제와 미디어위키 문법 사용시 내부링크 문제 해결하기 | Gunmania | 2016.02.12 |