2012-06-28 80 views
0

我已經安裝了codeigniter,運行並且都很好。除了現在我想爲用戶提供上傳圖片的方法。我認爲把文件夾放在唯一的地方是在應用程序目錄中(在我的例子中恰當地重命名爲「應用程序」)。無論如何。由於它是一個MVC,我需要在整個地方運行重寫條件。我相信這是場景之一。htaccess codeigniter mod-rewrite,rewritecond忽略主應用程序目錄中的子目錄

我需要的是有一個對應用程序文件夾中該子文件夾的工作條件

我原來改寫條件

RewriteCond $1 !^(index\.php|static|robots\.txt) 

這對於那些偉大工程,但不是這個情況,所以我需要一個新的條件,適用於上述,但支持應用程序/上傳(這甚至可能)?

回答

2

生活容易得多。

有一噸良好的資產管理Sparks你可以從挑選,以幫助這個太 - 我撰寫了一個我叫sk-asset它提供了大量的視圖助手&構成CI項目:

  • /CIAppRoot
    • 資產/
      • CSS/
      • 下載/
      • IMG/
      • JS/
      • 更少/
      • SWF/
      • 上傳/
      • XML/
    • 應用/
    • 系統/

種... htaccess的設置,可以爲現有的文件/目錄/等簡單地繞過CI路由:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    # block hidden directories 
    RewriteRule "(^|/)\." - [F] 

    RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 
</IfModule> 
+0

我想評價一下「上傳」這裏的意思是很重要的。通常它是(用戶生成的)內容。如果您要製作一份乾淨的網站/應用程序副本,是否也包含上傳的文件?如果沒有,那麼我會把他們從資產中分離出來。 – Robert

+0

是的,通常「上傳」是用戶推送的資產,而「下載」是由供應商提供的。根據複製應用程序的「乾淨副本」,作爲git用戶,我只需將assets/uploads/*添加到我的項目中即可。gitignore保證我不會在我的開發/舞臺/製作環境之間攜帶內容;所以不需要解耦這些資產目錄。 – sekati

1

上傳文件夾不必位於您的應用程序目錄中。事實上,如果它不在其中,它會更好。這樣您可以將應用程序與內容分開(上傳)。 如果你這樣做,你也不需要重寫條件。 這是我的CI目錄看起來像:如果你把你的資產的application/外(如羅伯特所述)

/application 
/assets 
/uploads 
/system