묻고답하기
이미지를 본문에 삽입할 때 상대 경로로 들어가게 하려면...?
2012.02.08 01:58
검색해보니 하나 나오기는 하는데 거기에 달린 답변대로 해도 안 되어서 질문드립니다. 일단 여기 참고(새 창임): http://www.xpressengine.com/20420805? 저 질문하신 분처럼 홈페이지 주소가 바뀌었을 경우에 본문내의 이미지가 보이지 않는 문제가 생깁니다.
상황을 좀 더 자세히 말씀드리겠습니다. 이 웹서버는 로컬에서만 운영하는 서버로 도메인을 가지고 있지 않고http://127.0.0.1 주소로 접속합니다. 물론 기본 url 도 공란으로 두었습니다. 그런데 이 컴퓨터 내의 가상머신에서는 다른 주소로 접속해야 합니다. 현재는 http://10.0.2.2
으로 되어 있습니다. 즉, 같은 웹서버의 주소가 상황에 따라 다르게 보인다는 겁니다. 그러다 보니 게시물 본문 내의 이미지가
절대 경로로 고정되어 버리면 호스트나 게스트, 어느 한 쪽에서는 보이지 않는 문제가 생깁니다. xe 가 원래 이렇지 않았는데
아마도 1.4에서 1.5로 올라가면서 뭔가가 바뀐 모양입니다. 이미지 첨부 자체에는 문제가 없고 그것을 본문에 삽입할 때만 이런
문제가 생깁니다.
src="http://127.0.0.1/xe/files/attach/images/151/031/009/831459becdb4d1aab524c738f59193ac.jpg"
현재 이렇게 이미지 주소가 잡히는 것을 손으로 다음과 같이 상대 주소로 바꾸어 주니까 양쪽에서 다 잘 보입니다.
src="/files/attach/images/151/031/009/831459becdb4d1aab524c738f59193ac.jpg" (files 앞의 슬래시는 없어야 함).
그 후에 에디터의 html 편집기로 들어가 보면 다시 절대 경로로 보이기는 합니다만 디비에는 상대 경로로 되어 있는지 여전히 양쪽에서 그림이 다 잘 보입니다.
아무튼 자동으로 이렇게 되게 하려면 에디터 어딘가를 손 봐야 할 텐데... 조언 부탁드립니다.
아 참, xe 1.5.1.6 사용중입니다.
댓글 3
-
송동우
2012.02.08 07:13
-
samsara
2012.02.13 07:11
자답입니다. 일단은 다음과 같이 하면 그림이 상대 경로로 삽입됩니다.
에디터 수정:
(1) xe/modules/editor/skins/xpresseditor/js/xe_interface.js 의 내용중
function editorReplaceHTML(iframe_obj, content) {
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
content = editorReplacePath(content);
var srl = parseInt(iframe_obj.id.replace(/^.*_/,''),10);
editorRelKeys[srl]["pasteHTML"](content);
}
에서 빨간 부분(즉, content = editorReplacePath(content);)을 지운다.
(2) xe/modules/editor/skins/xpresseditor/js/xpresseditor.js 의 내용중
function editorReplaceHTML(iframe_obj, content) {
// src, href, url의 XE 상대경로를 http로 시작하는 full path로 변경
content = editorReplacePath(content);
var srl = parseInt(iframe_obj.id.replace(/^.*_/,''),10);
editorRelKeys[srl]["pasteHTML"](content);
}
에서 빨간 부분(즉, content = editorReplacePath(content);)을 지운다.
(3) xe/modules/editor/skins/xpresseditor/js/xpresseditor.min.js 의 내용중
function editorReplaceHTML(c,l){var l=editorReplacePath(l),o=parseInt(c.id.replace(/^.*_/,""),10);editorRelKeys[o].pasteHTML(l)}
에서 빨간 부분(즉, l=editorReplacePath(l),)을 지운다.(3)번 과정 대신에 자바스크립트를 직접 압축하여 파일 자체를 재생성할 수도 있다. 예를 들어 jsmin 사용자라면 다음과 같이 한다.
jsmin <xpresseditor.js >xpresseditor.min.js
이렇게 하면 그림 중복 삽입 문제도 덤으로 해결된다.
(여기 참고: http://www.xpressengine.com/20320114)참고로 디비는 다음과 같이 수정했습니다. 덤프를 받아서 문제가 되는 문자열에 대하여 치환을 합니다.
cp -a xe.sql xe.sql.bak (만일의 사태에 대비)
sed -i 's|http\:\/\/127.0.0.1\/xe\/files|files|g' xe.sql
이것을 디비에 다시 부어줍니다. -
samsara
2013.02.24 06:25
위와 같이 해도 경우에 따라 절대경로로 들어가는 그림이 생기므로 다음과 같이 확실하게 처리해준다:
위의 (1), (2) 대신 xe/modules/editor/skins/xpresseditor/js/xe_interface.js 와 xe/modules/editor/skins/xpresseditor/js/xpresseditor.js 에서 editorReplacePath 함수의 정의와 본문에서 호출한 부분 자체를 몽땅 지워버린다.
db의 xe_site 테이블에서
domain 칼럼값을 변경하세요