是否使用HTACCESS重写规则破坏缓存?

时间:2017-09-23 作者:Mohamed Omar

我正在努力跟随this tutorial 也就是说,我可以让服务器发送类似文件的样式。css,如果请求的文件是样式。15458888.css,将重写规则放入htaccess文件中。

此规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+).(d+).(js|css)$ $1.$3 [L]
所以我在head 标签:

<?php $time = filemtime(get_template_directory() .\'/assets/css/main.css\');?>
<link href="<?php echo get_template_directory_uri().\'/assets/css/main.\'.$time.\'.css\'?>" rel="stylesheet" type="text/css">
这个在Htaccess:

    # BEGIN WordPress
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 6 hours"
    ExpiresByType image/jpeg "access plus 6 hours"
    ExpiresByType image/gif "access plus 6 hours"
    ExpiresByType image/png "access plus 6 hours"
    ExpiresByType text/css "access plus 6 hours"
    ExpiresByType application/pdf "access plus 1 week"
    ExpiresByType text/javascript "access plus 6 hours"
    ExpiresByType text/html "access plus 10 minutes"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 3 hours"
</IfModule>
Header set X-Endurance-Cache-Level "2"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^(.+).(d+).(js|css)$ $1.$3 [L]
</IfModule>

# END WordPress
正如您所看到的RewriteRule ^(.+).(d+).(js|css)$ $1.$3 [L] 已添加到</IfModule>

文件名已正确更改,如下所示:

<link href="http://ask.prosentra.com/wp-content/themes/tutorialblog/assets/css/main.1504604028.css" rel="stylesheet" type="text/css">
但服务器仍然没有实现我提到的规则。怎么了?

2 个回复
SO网友:Mark Kaplun

这是一种死胡同,因为排队API不支持这种版本控制格式,这意味着您必须避免使用它,这不是一件好事。你的具体问题是你添加规则太晚了,RewriteRule . /index.php [L] 将处理“转移”到wordpress,之后将不做任何事情,这意味着您需要切换它们的顺序。同样,更改wordpress核心重写规则并不明智,您可能应该在wordpress规则部分之外添加一个特定部分。

SO网友:user24601

您只需添加一些\\\'并重新排序规则,使其位于“全部捕获”规则之前(将规则置于WordPress规则之上)。

你想要一个\\ 在本例中的句点之前,因为您希望它与http请求中的文字句点匹配。

你想要一个\\d 因为我们希望它匹配任何数字,而不是字母d。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\\.(\\d+)\\.(js|css)$ $1.$3 [L]
有了它,我们可以在文件名请求的句点之间添加任意数字,这将破坏缓存,但在服务器上它将保持相同的文件名。

结束

相关推荐

500更新htAccess时出现内部服务器错误

我正在为WP使用一个测验插件,它在添加太多问题后导致504网关超时。开发人员告诉我更新.htaccess 具有以下代码的文件:php_value max_input_vars 5000 php_value suhosin.post.max_vars 5000 php_value suhosin.request.max_vars 5000 这是.htaccess 代码之前,我添加了3行代码:# BEGIN WordPress <IfModule mod_rewrite