htaccess 重写以清除缓存

问题描述 投票:0回答:1

为了缓存 .css 和 .js 文件,并且不想走查询字符串路线,我想通过 htaccess 重写以“foo*/”开头的路径来删除/忽略“foo*/” -星号可以是任何数字,因为它将是版本。

示例#1:

/foo123/css/style.css
should actually just request:
/css/style.css

示例#2:

/foo456/js/script.js
should actually request:
/js/script.js

另一种方法可能是在文件名中包含要忽略的版本号。同样,数字可以是任何东西,所以它不能被硬编码,所以也许它应该分解文件名,并删除第二部分。 示例:

/css/styles.123.css
should actually just request:
/css/styles.css

或:

/js/script.11235.js
should actually just request:
/js/script.js

到目前为止,我得到的是,这根本不起作用,这只是给了我一个 404:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L]

以上代码来自: https://github.com/h5bp/server-configs-apache/blob/02a601e5914a504e019c46b76bb21adab89cb686/src/.htaccess#L677-692

我目前有这个,用于漂亮的网址,所以需要考虑不要破坏/干扰这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

感谢任何帮助, 谢谢!

.htaccess
1个回答
0
投票

为版本化路径添加此内容:

RewriteCond %{REQUEST_URI} ^/foo\d+/(.*)$
RewriteRule ^ /%1 [L]

用此替换版本化文件名:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.\d+\.(css|js)$ $1.$2 [L]
© www.soinside.com 2019 - 2024. All rights reserved.