2009-11-22 6 views
2

저는이 일에 초보자입니다. CodeIgniter로 개발하기 시작했고 자바 스크립트 라이브러리를 통합하려고합니다. 그러나, 모든 .htaccess를 설정하여 모든 요청에 ​​/index.php/가 붙여지기 때문에 파일을 포함하기가 어렵습니다. CSS의 경우 PHP 인클루드를 사용하여이 문제를 해결하고 인라인으로 만들 수 있습니다. 어쨌든 더 빠릅니다. 그러나 이것은 자바 스크립트 라이브러리에 대한 나쁜 생각처럼 보입니다.CodeIgniter 및 JS 라이브러리

의견이 있으십니까? 나는 index.php/폴더를 만들고 거기에 집어 넣어야합니까?

감사합니다.
말라

답변

8

당신은 단지에 조건을 추가하여 재 작성 규칙을 방지 할 수 있습니다

RewriteCond $1 !^(index\.php|images|scripts|styles|robots\.txt) 

그런 다음 당신은 당신의 docroot를에 등 모든 스크립트, 이미지를 넣을 수 있습니다.

자세한 내용은 Apache Rewrite docs을 참조하십시오.

+0

감사합니다! 이건 내 문제를 해결하고 다른 몇 가지 내가 너무 가지고 있었어 :) – Mala

1

사실은 내 외부의 모든 파일을 유치하기 위해 자원 제어기를 사용

class Resources extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function javascript() 
    { 
     $arr = func_get_args(); 
     if(sizeof($arr) == 0) 
     { 
      show_404(); 
      return; 
     } 
     if(is_numeric($arr[ sizeof($arr) - 1 ])) 
     { 
      array_pop($arr); 
     } 
     $name = implode("/", $arr); 
     $this->load->view("javascript", array("importscript" => $name)); 
    } 
    public function css() 
    { 
     $arr = func_get_args(); 
     if(sizeof($arr) == 0) 
     { 
      show_404(); 
      return; 
     } 
     if(is_numeric($arr[ sizeof($arr) - 1 ])) 
     { 
      array_pop($arr); 
     } 
     $name = implode("/", $arr); 
     $this->load->view("css", array("importscript" => $name)); 
    } 
    public function image() 
    { 
     $arr = func_get_args(); 
     if(sizeof($arr) == 0) 
     { 
      show_404(); 
      return; 
     } 
     if(is_numeric($arr[ sizeof($arr) - 1 ])) 
     { 
      array_pop($arr); 
      // if the last item is a number, that means it was 
      // automatically generated to prevent caching 
     } 
     $name = implode("/", $arr); 
     $this->load->view("images", array("importscript" => $name)); 
    } 
} 

을 서로 다른 의견이 같은 모든 것을 다음과 같습니다

$import = dirname(__FILE__) . "/javascript/$importscript"; 
if(!showjs($import) && is_dir($import)) 
{ 
    if(!showjs("$import/$importscript")) 
    { 
     show_404(); 
    } 
} 

function showjs($imp) 
{ 
    if(is_file("$imp.js")) 
    { 
     header('Content-type: application/javascript'); 
     echo "/*----- Imported into PHP so JavaScript can all be dynamically declared -----*/\n\n"; 
     echo file_get_contents("$imp.js"); 
     return true; 
    } 
    elseif(is_file("$imp.php")) 
    { 
     header('Content-type: application/javascript'); 
     echo "/*----- Imported into PHP so JavaScript can all be dynamically declared -----*/\n\n"; 
     include_once("$imp.php"); 
     return true; 
    } 
    return false; 
} 

당신이 볼 수 있듯이, 컨트롤러는 뷰에 파일 이름을 전달합니다. 그러면 importscript 변수와 연관된 js 파일이나 PHP 파일이 있는지보기가 표시됩니다. 있을 경우 헤더를 설정 한 다음 파일을 표시합니다.

+0

이것은 유용하게 보이지만 내 요구에 과잉이다. – Mala

1

mod_rewrite를 사용하는 경우 RewriteRule을 RewriteRule 앞에 추가하기 만하면됩니다. 예를 들어 :

RewriteCond %{REQUEST_URI} !\.(css|js|jpe?g|png|gif)$ 
RewriteRule ^([^/]+)/([^/]+)/? index.php?ctrl=$1&event=$2 [L,QSA] 
0

아마 내가 뭔가를 missunderstanding 해요하지만 당신이 문서에 시작하는 경우 이유는 단지 CSS

<link rel="stylesheet" type="text/css" href="/css/main.css"> 

<script type="text/javascript" src="/js/javascript.js"></script> 

같은 절대 URL로 자바 스크립트 라이브러리를 포함하지 루트를 사용하면 / 파일을 찾는 데 문제가 없습니다.

+0

사용자의 브라우저가 /js/javascript.js에 대한 요청을 보낼 때 /index.php/js/javascript.js로 전달됩니다 때문에 – Mala

+0

서버를 올바르게 설정 한 경우 – Galen

관련 문제