1

我想使用 url 的一部分来帮助缓存清除和跟踪我的应用程序中使用的资源版本

也就是说,我有一个网络应用程序,它的资源保持独立并由 nginx 提供服务。资源保存在文件夹中:

app_name/img/sprites.png
app_name/css/compressed.css
app_name/scripts/mini.app.js

然后我想用以下形式的 uris 来引用这些:

/app_name/#{version}/img/sprites.png

也许

/#{version}/app_name/img/sprites.png

其中 #{version} 是要加载的资源的版本。

然后,我希望始终将资源保留在文件系统中的同一位置,并使用 nginx 始终指向相同的文件。

4

1 回答 1

4

假设您只想要这三个子目录,如果找不到资源则返回 404,您可以使用正则表达式位置try_files来执行此操作:

# /app_name/#{version}/img/sprites.png urls:
location ~ ^/app_name/[^/]+(?<resource>/(img|css|scripts)/.+) {
  try_files /app_name$resource =404;
}

# /#{version}/app_name/img/sprites.png urls:
location ~ ^/[^/]+(?<resource>/app_name/(img|css|scripts)/.+) {
  try_files $resource =404;
}

如果您希望位置匹配任何目录而不是仅列出三个目录,您可以将 (img|css|scripts) 替换为 [^/]+。

于 2012-05-21T12:58:51.013 回答