如果路径中不存在则加载文件

时间:2015-05-17 10:04:02

标签: .htaccess

我想为WordPress创建css minify。 Minifed文件将保存在wp-content / cache和width .min.css中 - 示例:wp-content / cache / themes / twentyfifteen / style.min.css

我想要更改样式网址: www.example.com/wp-content/themes/twentyfifteen/style.css 至 www.example.com/wp-content/themes/twentyfifteen/style.min.css

但我不知道如何写htaccess规则。应检查Htaccess规则是否存在该文件wp-content / themes / twentyfifteen / style.min.css。如果文件存在则文件加载但如果不存在则从wp-content / 缓存加载文件 / themes / twentyfifteen / style.min.css

我的代码:

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

这不起作用

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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文件

中的任意位置添加此内容

已编辑以首先检查主题文件夹