我在我的have服务器上有这个文件:
http://example.com/static/js/min/common.min.js由于/static/中的所有文件都是用CloudFlare的边缘缓存缓存的,所以我需要一种方法来用这样的方式更改url,所以如果文件被修改了,新版本将自动更新:
http://example.com/static/js/min/common.min.1234567890.js其中1234567890是文件日期修改的时间戳。我已经根据修改日期生成了文件名,我遇到的问题是在.htaccess文件中。
这样做很好:
RewriteRule ^(.*)\.[\d]{10}\.(js)$ $1.$2 [L]这意味着:
http://example.com/static/js/min/common.min.1234567890.js重定向到:
http://example.com/static/js/min/common.min.js但是,这将捕获来自域的所有.js请求,我只想捕获来自/static/js/min/*.js的.js请求--但这是失败的:
RewriteRule ^static/js/min/(.*)\.[\d]{10}\.(js)$ $1.$2 [L]规则应该是什么样的呢?
发布于 2017-03-30 07:10:41
从你的问题来看,
你想重定向
http://example.com/static/js/min/common.min.1234567890.js至
http://example.com/static/js/min/common.min.js那么,怎么做呢?
the .htaccess
先加
RewriteEngine On 打开重写引擎
然后下一条重要的路线来了
RewriteRule ^static/js/min/([^\d]*)(\d{10}).js$ static/js/min/$1js [L]解释
将路径设置为static/js/min/
然后,我们使用RegEx来接受字符串,直到一个非数字。([^\d]*)。
也就是说,捕获了common.min.。
现在的$1 是 common.min.
然后,为了匹配url,我们使用(\d{10})来捕获数字。
也就是说,捕获了1234567890。
现在的$2 是 1234567890 ,我们不再想要了
然后重定向到
static/js/min/$1js并不是说我们没有在.之后添加$1,因为$1以. (common.min.)结尾
所以,代码将是
RewriteEngine On
RewriteRule ^static/js/min/([^\d]*)(\d{10}).js$ static/js/min/$1js [L]工作镜头
我的文件结构

浏览器中的地址

https://stackoverflow.com/questions/42990927
复制相似问题