2013-04-08 70 views
-1

我有以下文件樹:htaccess的的mod_rewrite到子文件夾

root 
    -lib 
    -config 
    -public 
     -img 
     -css 
     -js 
     index.php 
    .htaccess 

的.htaccess是在根文件夾。大多數請求應該被重寫爲 public/index.php?request = $ 1,但這不是問題。

我不想再重寫規則的圖像,CSS和JavaScript(或在一般情況下,在/公共所有其他文件或目錄):

而不是

example.com/public/css/style.css 我要的文件是 下可用example.com/css/style.css

而是和

example.com/public/newfolder/randomfile.txt 我想要的文件是可在 example.com/newfolder/randomfile.txt

所以我必須保留這個摘要。

我不能使它正常工作,特別是不是在一個.htaccess文件中的兩種情況的組合。

這是文件的基本重寫規則/文件夾不存在:

RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]

任何幫助,將不勝感激。

回答

1

您可以用RewriteCond測試,如果有相應的你的要求一個真正的文件,然後停止重寫

RewriteEngine on 

# real files 
RewriteCond %{DOCUMENT_ROOT}/public/$0 -f 
RewriteRule ^.+$ public/$0 [L] 

# everything else 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L] 

編輯:

如果根的子文件夾被用作項目根:


RewriteEngine on 

RewriteBase /subdir/ 

# real files 
RewriteCond %{DOCUMENT_ROOT}/subdir/public/$0 -f 
RewriteRule ^.+$ public/$0 [L] 

# everything else 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L] 
+0

我試過了。第二條規則仍然適用,即使存在真實文件。 – Daniel 2013-04-08 07:48:55

+1

@Daniel我在規則中有兩個錯誤。 1.規則:替換真實文件。 2.規則:不要重寫真實文件。 – 2013-04-08 08:02:26

+0

感謝它現在的作品。我必須刪除第一條規則中的前導斜槓。 – Daniel 2013-04-08 08:11:37

相關問題