使用 mod_rewrite 进行 JS/CSS 版本控制的 Apache 规则

Con*_*ish 2 apache mod-rewrite

过去 2 小时我一直在尝试这个。

我如何使用 mod rewrite 来做到这一点:

/assets/app.min.4364736473.js -> /assets/app.min.js
/assets/app.min.4364736473.css -> /assets/app.min.css

小智 5

并不是说 nikoshr 的答案有什么问题,但也许这更通用,可以在使用该格式的网站中的任何地方工作,因为它不太可能用于任何常用的扩展。如果是,它会在执行之前检查带有该编号的文件是否不存在。是.min可选的,无论有没有它都可以:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.\d+(\.(?:js|css))$ $1$2
Run Code Online (Sandbox Code Playgroud)

最后,不使用该[L]标志,因为可能需要在重写的 URL 上应用其他规则,并且不需要阻止这种情况发生。

它只能在 a.htaccess<Directory>上下文中正常工作。否则(在根配置或<VirtualHost>上下文中)将需要修改文件测试才能工作,否则现有文件将不会被注意到并且无论如何都会执行。