CI 묻고 답하기

제목 url 접근에 관한 질문입니다. 꾸벅~~
글쓴이 꾸숑 작성시각 2013/02/16 04:09:38
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 18102   RSS

제가 아래와 같은 함수를 helper 에 넣어 놓고 사용할려고 합니다.
함수는 skin 디렉토리 안의 디렉토리명들을 인식해서 불러오는 함수 입니다.
일반적인 php에서는 제대로 작동되는데 CI에서는 좀 어렵네요~
skin 디릭토리 경로를 잡지 못해서 질문 드립니다.
★현재 루트에 skin 디렉토리를 생성하면 인식 됩니다.
   제가 원하는건views/admin/skin 이 인식되는것입니다.

.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On

 RewriteBase /

# RewriteCond %{HTTP_HOST} ^codeigniter-kr.org [NC]
# RewriteRule ^(.*)$ http://codeigniter-kr.org/$1 [L,R=301]
#디렉토리 추가시 위에 디렉토리명 추가할것
 RewriteCond $1 !^/(index\.php|admin|skin|images|captcha|data|include|trac|MyAdmin|robots\.txt)
#아래 2라인은 파일이나 디렉토리가 존재하면 index.php를 거치지 않고 직접 아파치가 처리 하라는 뜻입니다
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 #RewriteCond %{REQUEST_URI} !^/captcha/(.*)$
 #RewriteCond %{REQUEST_URI} !^/images/(.*)$
 #RewriteCond %{REQUEST_URI} !^/data/(.*)$
 #RewriteCond %{REQUEST_URI} !^/include/(.*)$
    #RewriteCond %{REQUEST_URI} !^/admin/(.*)$
 #RewriteCond %{REQUEST_URI} !^/skin/(.*)$
 #RewriteCond %{REQUEST_URI} !^/admin/skin/(.*)$
 #RewriteCond %{REQUEST_URI} !^//(.*)$
# RewriteRule ^(.*)$ index.php/$1 [L]
 RewriteRule ^(.*)$ /board_tank/index.php/$1 [L]

</IfModule>




아래는 제가 사용할려고 하는 함수 입니다.
  $dirname = "http://localhost/board_tank/application/views/admin/skin/";
위의 링크를 제대로 잡고 싶습니다.
helper
function get_skin_dir($skin, $len='')
{
    global $g4;

    $result_array = array();

    $dirname = "http://localhost/board_tank/application/views/admin/skin/";
    $handle = opendir($dirname);
    while ($file = readdir($handle))
    {
        if($file == "."||$file == "..") continue;

        if (is_dir($dirname.$file)) $result_array[] = $file;
    }
    closedir($handle);
    sort($result_array);

    return $result_array;
}


views
<tr>
       <td>스킨 선택
       <td><select name=board_skin required itemname="스킨 디렉토리">
<?
        $arr = get_skin_dir("skin");
        for ($i=0; $i<count($arr); $i++) {
        echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
        }
?>     </select> skin/스킨폴더 (폴더 자동 인식됨)
       <script type="text/javascript">document.tx_editor_form.board_skin.value='<?=$board_skin?>';</script>

태그 .htaccess,url,인식,디렉토리,경로
 다음글 databases.php 에 대해서 질문 드립니다. (2)
 이전글 링크관련하여 질문입니다.. (1)

댓글

변종원(웅파) / 2013/02/16 11:18:27 / 추천 0
개념을 잘못 잡으신것 같네요.

디렉토리 가져오는 함수를 http://localhost/board_tank/application/views/admin/skin/ 로 가져오면
문제가 생깁니다. 절대경로나 상대경로로 바꾸시고고

.htaccess에 skin이라는 디렉토리명을 넣고 사용하려면 skin 디렉토리가 application과 동일한 레벨에
있어야 합니다. 즉 아무 쓸모 없는 코드라는거죠.

현재 원하는게 skin 디렉토리 하위의 디렉토리명만 가져오는 거고 사용은 load->view('디렉토리명/파일') 형태로
할것이라 .htaccess는 필요가 없습니다.
꾸숑 / 2013/02/17 01:20:49 / 추천 0

웅파//답변 감사합니다.
.htaccess의 사용법을 알수 있게 되어 답답함이 풀렸네요....
어쩐지 루트의 디렉토리만 직접 접근 가능하더라고요 ㅎ

쉬운문제 같은데 이상하게 머리가 복잡해져서 질문 하게 되었네요...

말씀하신데로... 그 방향으로 작업해 보겠습니다.

//////////////////////////////////////////////////////////////////////////////
2013.02.17 06:36
루트에 디렉토리를 생성하고 install 관련 파일들을 넣어놓고 실행시키니 일반php소스가
거의 제대로 실행되네요.... CI로 처리하기 복잡하거나 불필요한 경우에 유용한것 같습니다.