CI 묻고 답하기

제목 js, css 경로 설정 질문
글쓴이 제키 작성시각 2013/08/21 10:44:46
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 27253   RSS


/
├ www  (web root)
└ lib
    ├ js
    └ css


CI 모든 파일을 www 하위에 넣고 사용하려고 합니다.
그래서 js, css를 www 하위에 위치하여 lib/js, lib/css 로 넣었습니다.


constants.php에서

define('JS_ROOT', dirname(FCPATH).'/lib/js');
define('CSS_ROOT', dirname(FCPATH).'/lib/css');

설정하고

view에서
 

<link rel="stylesheet" href="<?php echo CSS_ROOT?>/style.css" type="text/css" />
<script type="text/javascript" src="<?php echo JS_ROOT;?>/common.js"></script>



이렇게 했더니 소스 보기 하면 아래처럼 절대경로 전체가 보여지고 적용도 되지 않습니다.

<script type="text/javascript" src="/home/xxx/yyyy/www/public/js/common.js"></script>




제가 설정하고 싶은 건
/
├ www
└ lib
    ├ js
    └ css

에 js, css를 위치시키고 소스보기하면

<script type="text/javascript" src="http://www.abc.com/js/common.js"></script>

으로 적용하고 싶습니다.


ZEND framework는 어찌어찌 하는 방법이 있는데 CI에서도 방법이 있을 것 같아 질문합니다.



 

 다음글 트렌젝션 trans_start(), trans_comp... (5)
 이전글 프로그램 툴 질문이요[html5 builder] (2)

댓글

변종원(웅파) / 2013/08/21 11:14:37 / 추천 0

포럼 소스 보신거 같은데 dirname(FCPATH) 는 현재 디렉토리를 나타냅니다.

define('CSS_DIR', 'http://'.$_SERVER['HTTP_HOST'].'/include/css');

제키 / 2013/08/21 11:26:35 / 추천 0
네. TIP게시판에서 설정사항 좀 찾아보다가 적용해봤습니다.

웅파님이 말씀해주신 내용은 단지 브라우저에서 소스보기 했을 경우 http://www.abc.com/include/css 로만 보일 뿐 실제 css 파일은 웹루트 아래에 위치하고 있기 때문에 웹브라우저가 불러오지 못하는 것 같습니다.
만약,
/
└   www (web root)
          └ include
                   └ css
                이 곳에 css 파일이 위치했다면 답변 주신대로 적용하면 되겠지만,

제가 설정하고자 하는 것은

/
├ www  (web root)
└ include
        ├ js
        └ css

웹 루트 하단 (www와 형제 노드) 에 파일을 위치시키고, 정상적으로 가져와 주기를 원하는 겁니다.
물론 브라우저에서 소스보기했을 때는 css, js 경로가 http://www.abc.com/include/css 로 보여지기를 원하구요.

마치 아파치에서 doc 경로 설정해 주면, 해당 디렉토리가 그 계정의 root가 되듯이,
js, css의 위치를 지정해 줄 수 있는 설정사항이 있는지가 궁금합니다.


변종원(웅파) / 2013/08/21 11:42:23 / 추천 0
웹 디렉토리가 아닌 곳의 파일은 읽어서 화면에 뿌리면 되기는 합니다만

두번째 소스 보기 했을 때 경로는 ci단의 rourtes.php에서 처리하기는 힘들 것 같고 서버(아파치)단에서

처리해야할 것 같네요.

(보통 보안을 강조할 경우 application 디렉토리를 웹이 접근 못하는 곳에 위치시키고 css나 js는 웹 디렉토리에 위치시키는데
반대인 경우네요. ^^;)
제키 / 2013/08/21 11:59:33 / 추천 0

웅파님 말씀 감사합니다.
좀만 고민 해보다가 안되면 그냥 www - 상위에 위치해야겠군요.


그리고 css, js만 www와 동일한 노드에 두려는게 아니라 모든 파일을 하위에 위치하려고 하는겁니다.
중요한 파일을 그렇게 둘리가 없겠죠 ^^

/
├ application
├ system
├ lib (images, js, css 등)
└ www

이렇게 구성하려고 했었네요 ^^
www에는 index.php 외에는 아무것도 안쓰려고 했었지요.
 

변종원(웅파) / 2013/08/21 12:01:40 / 추천 0
/
├ application
├ system
└ www  - lib (images, js, css 등)
               - index.php


이렇게 구성하면 index.php에서 한줄 수정으로 가능합니다.

js, css는 어차피 소스보기 하면 나오는 것이라 들이는 공수에 비해 얻는 것이 미미하다고 판단되네요.
제키 / 2013/08/21 12:17:01 / 추천 0
웅파님 답변 감사합니다.
언급하신대로 딱히 중요한 파일들도 아니니 그냥 www 밑으로 구성해야겠네요.
zend하다가 ci하려니 셋팅하는 것 부터 막히는군요 ㅋ
앞으로도 많은 도움 부탁드립니다. (책도 샀어요 ^^)
변종원(웅파) / 2013/08/21 13:22:36 / 추천 0
감사합니다. ^^
동도리군 / 2013/08/21 14:56:45 / 추천 0
 저는 view 않에 게시판 같은 경우에는
/views/board/ 
하위에 다 넣고 싶어서
board.js 파일 넣어둔 후에

<script language="javascript" type="text/javascript" src="/loadfile/files/board/board.js"></script>
이렇게 호출하고

loadfile.php 파일 에서
function files()
{
$this->yield = FALSE ;
$_url = str_replace("/loadfile/files","", $this->uri->uri_string() ) ;
$_url_fl = FCPATH.'views'.$_url ;
if ( $_url != '' && file_exists($_url_fl) ) {
if ( stripos( $this->uri->uri_string(), "css" ) !== FALSE ) {
header("Content-type: text/css", true) ;
}
$this->load->view($_url) ;
}
}
이렇게 호출해버렸네요 ㅋ~