我想为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]
这不起作用
答案 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
文件
已编辑以首先检查主题文件夹