2009-11-22 115 views
2

所以我在這種事情上是一個新手 - 我剛開始使用CodeIgniter開發,我試圖集成JavaScript庫。但是,我設置了我的.htaccess文件,以便所有請求都在/index.php/之前添加/index.php/,這使得很難包含文件。對於CSS,我只是使用一個PHP包含來解決這個問題,並使其內聯,反正更快。但是,這似乎是一個好主意的JavaScript庫。CodeIgniter和JS庫

有什麼想法?我應該只是創建一個index.php /文件夾並將其粘貼在那裏?

謝謝!
麻辣

回答

8

您可以只需添加一個條件,它避免了重寫規則:

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

然後你就可以把所有的腳本,圖像等,在你的文檔根目錄。

查看Apache Rewrite docs瞭解更多信息。

+0

謝謝!這解決了我的問題,以及其他一些我也有:) – Mala 2009-11-22 21:34:53

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; 
} 

正如你所看到的,控制器將文件名傳遞給視圖。然後該視圖會查看是否有與importcript變量關聯的js文件或php文件。如果有,它將設置標題並顯示文件。

+0

這看起來很有用,但是對我的需求來說是過量的 – Mala 2009-11-23 02:45:25

1

如果您使用mod_rewrite,只需在您的RewriteRule前添加一個RewriteCond即可。 例如:

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

也許我missunderstanding的東西,但爲什麼不直接包括JavaScript庫與絕對URL

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

相同的CSS

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

如果你開始在DOC root使用/那麼你將不會有任何問題找到文件。

+0

,因爲當用戶的瀏覽器發送/js/javascript.js的請求時,它將被轉發到/index.php/js/javascript.js – Mala 2009-11-22 21:26:16

+0

而不是如果你的服務器設置正確 – Galen 2011-02-07 22:11:09