.htaccess 加载路径中不存在的文件

.htaccess 加载路径中不存在的文件,.htaccess,.htaccess,我想为WordPress创建css缩小。迷你文件将保存在wp-content/cache和width.min.css中-示例:wp-content/cache/themes/twenty15ven/style.min.css 我想更改以下url的样式: www.example.com/wp-content/themes/twentyeven/style.css 到 www.example.com/wp-content/themes/twentyeven/style.min.css 但我不知道如何

我想为WordPress创建css缩小。迷你文件将保存在wp-content/cache和width.min.css中-示例:wp-content/cache/themes/twenty15ven/style.min.css

我想更改以下url的样式: www.example.com/wp-content/themes/twentyeven/style.css 到 www.example.com/wp-content/themes/twentyeven/style.min.css

但我不知道如何编写访问规则。Htaccess规则应该是检查wp content/themes/twenty15ven/style.min.css文件是否存在。如果文件存在,则加载文件;如果不存在,则从wp content/缓存加载文件

我的代码:

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

您可以使用此规则:

# 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]

这不是一个.htaccess问题

.htaccess会根据您请求的文件为您进行各种重定向,但在您将请求输入WordPress流之前,它永远不会请求它

由于您使用的是WordPress,这将起作用(我在WordPress安装中对其进行了测试):

函数加载_minify(){
foreach(数组('wp content','wp content/cache')作为$dir)
{
$fpath=$dir.'/themes/twentyeven/style.min.css';
$froot=$\u服务器['DOCUMENT\u ROOT'];
如果(是_文件($froot.'/'.$fpath)):?>

您显示的代码重定向不存在的文件(-f)和不存在的目录/文件夹(-d)到目的地--在您的情况下,是一个.css文件…您误解了.htaccess如何工作您在浏览器中输入的URL是什么?嗯,不是。在浏览器中转到www.example.com/wp-content/themes/twenty15ve/style.min.css如果文件存在于位置wp content/themes/twenty15ve/style.min.css,则加载此文件。如果不存在,则检查是否存在于中wp content/**缓存**/themes/twenty15ve/并加载此文件,但您写道:
www.example.com/wp content/themes/twenty15ve/style.css
style之后没有
min
使用更新规则作为
RewriteBase
行下方的第一条规则。如果在style.min.css中有问题吗?背景:url(../images/test.jpg);从样式表到其他资源的路径是相对于样式表本身的。因此,是的,如果有一个图像的相对URL,并且该图像没有在缓存中复制,它将被破坏。但是如果样式表定义了一个绝对图像URL,它将不会被破坏。这就是为什么我从不在样式表、javascripts等中使用相对URL的原因。但是OP的问题是如何从它们或缓存中包含样式表文件。是的,这是一个问题。所以我的想法是使用相同的url到css,将文件名从style.css更改为style.min.css,并使用htaccess检查和加载文件OK,然后工作——使用上面的代码将请求放入循环,然后使用.htaccess重定向到n样式表请求的URL..htaccess无法在没有
请求的情况下帮助您
——您必须能够以某种方式启动请求。(如果在我下次检查时您还没有弄清楚,我将提供更多详细信息。不过我现在必须走了)
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' );