2015-05-17 62 views
0

我想爲WordPress創建css minify。 Minifed文件將保存在wp-content/cache和width中.min.css - 示例:wp-content/cache/themes/twentyfifteen/style.min.css如果路徑中不存在加載文件

我想要改變樣式的URL: www.example .COM /可溼性粉劑內容/主題/ twentyfifteen/style.css中 到 www.example.com/wp-content/themes/twentyfifteen/style.min.css

但我不知道怎麼寫的htaccess規則。 Htaccess規則應檢查該文件是否存在wp-content/themes/twentyfifteen/style.min.css。如果文件存在,那麼文件加載,但如果再不行,從存在的wp-content /加載文件緩存/主題/ twentyfifteen/style.min.css

我的代碼:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*\.min.css$ /www-content/cache/$1.min.css [L] 

這唐「科技工作

+0

您顯示的代碼將不存在的文件(-f)和不存在的目錄/文件夾(-d)重定向到目標 - 在您的情況下,.css文件...您錯誤地接受了.htaccess的工作方式 – aequalsb

回答

1

您可以使用此規則:

# if current file doesn't exist 
RewriteCond %{REQUEST_FILENAME} !-f 
# check presence of min.css in cache dir 
RewriteCond %{DOCUMENT_ROOT}/$1/cache/$2 -f [NC] 
RewriteRule ^(wp-content)/(themes/[^/]+/.+?\.min.css)$ /$1/cache/$2 [L,NC,R=302] 
+0

你在瀏覽器中輸入什麼網址? – anubhava

+0

嗯,沒有。在瀏覽器中,如果文件存在於位置wp-content/themes/twentyfifteen/style.min.css中,請轉至www.example.com/wp-content/themes/twentyfifteen/style.min.css,然後加載此文件。如果不存在,請檢查wp-content/**緩存中是否存在**/themes/twentyfifteen /並加載此文件 – unknown

+0

但您寫道:'www.example.com/wp-content/themes/twentyfifteen/style.css'在'style'之後沒有'min'。 – anubhava

1

這不是一個.htaccess問題...

的.htaccess將使各種基於你請求的文件爲你的重定向,但要等到獲得請求到你的WordPress的流動,它絕不會要求它...

因爲你使用WordPress,這將工作(我測試了我的WordPress安裝):

function load_minify() { 
    foreach(array('wp-content', 'wp-content/cache') as $dir) 
    { 
     $fpath = $dir . '/themes/twentyfifteen/style.min.css'; 
     $froot = $_SERVER['DOCUMENT_ROOT']; 
     if (is_file($froot . '/' . $fpath)) : ?> 
    <link rel="stylesheet" type="text/css" media="all" href="<?php echo get_bloginfo('url') . '/' . $fpath; ?>" /> 
    <?php 
     break; 
     endif; 
    } 
} 
add_action('wp_head', 'load_minify'); 

在您的父母或子女functions.php文件

EDITED檢查主題添加此隨地文件夾第一

+0

問題如果在style.min.css將背景:url(../ images/test.jpg); – unknown

+0

樣式表中其他資源的路徑與樣式表本身相關。所以是的,如果存在相對於圖像的URL,並且圖像沒有被複制到緩存中,則會被破壞。但如果樣式表定義絕對圖片網址,則不會被破壞。這就是爲什麼我從不在樣式表,JavaScript等中使用相對URL的原因,但OP的問題是如何從它們或緩存中包含樣式表文件。 – aequalsb

+0

是的,這是問題。所以我的想法是使用相同的URL來改變文件名從style.css到style.min.css,並使用htaccess來檢查和加載文件 – unknown

相關問題