首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在htaccess中重写name.123456.js的规则

问在htaccess中重写name.123456.js的规则
EN

Stack Overflow用户
提问于 2017-03-24 03:31:27
回答 1查看 316关注 0票数 4

我在我的have服务器上有这个文件:

代码语言:javascript
复制
http://example.com/static/js/min/common.min.js

由于/static/中的所有文件都是用CloudFlare的边缘缓存缓存的,所以我需要一种方法来用这样的方式更改url,所以如果文件被修改了,新版本将自动更新:

代码语言:javascript
复制
http://example.com/static/js/min/common.min.1234567890.js

其中1234567890是文件日期修改的时间戳。我已经根据修改日期生成了文件名,我遇到的问题是在.htaccess文件中。

这样做很好:

代码语言:javascript
复制
RewriteRule ^(.*)\.[\d]{10}\.(js)$ $1.$2 [L]

这意味着:

代码语言:javascript
复制
http://example.com/static/js/min/common.min.1234567890.js

重定向到:

代码语言:javascript
复制
http://example.com/static/js/min/common.min.js

但是,这将捕获来自域的所有.js请求,我只想捕获来自/static/js/min/*.js的.js请求--但这是失败的:

代码语言:javascript
复制
RewriteRule ^static/js/min/(.*)\.[\d]{10}\.(js)$ $1.$2 [L]

规则应该是什么样的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 07:10:41

从你的问题来看,

你想重定向

代码语言:javascript
复制
http://example.com/static/js/min/common.min.1234567890.js

至

代码语言:javascript
复制
http://example.com/static/js/min/common.min.js

那么,怎么做呢?

the .htaccess

先加

代码语言:javascript
复制
 RewriteEngine On 

打开重写引擎

然后下一条重要的路线来了

代码语言:javascript
复制
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 ,我们不再想要了

然后重定向到

代码语言:javascript
复制
static/js/min/$1js

并不是说我们没有在.之后添加$1,因为$1以. (common.min.)结尾

所以,代码将是

代码语言:javascript
复制
RewriteEngine On
RewriteRule ^static/js/min/([^\d]*)(\d{10}).js$ static/js/min/$1js [L]

工作镜头

我的文件结构

​

​

浏览器中的地址

​

​

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42990927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档