我的应用程序生成静态 URL,例如:
/nhub/public/static/A8Ec-8B33/css/styles.css
/nhub/public/static/A8Ec-8B33/favicon.ico
应用程序更新后,它会生成与以下相同的 URL:
/nhub/public/static/X53L-SbTy/css/styles.css
/nhub/public/static/X53L-SbTy/favicon.ico
每个版本的应用程序都会独特地生成A8Ec-8B33
这些片段。X53L-SbTy
对于这两种情况,我希望 NGINX 指向相同的底层文件:
D:\sitenhub\sitestatic\css\styles.css
D:\sitenhub\sitestatic\favicon.ico
我试过:
location ~ ^/nhub/public/static/[^\/]+/ {
alias D:/sitenhub/sitestatic/;
}
但403 forbidden
上面的例子却不行。希望得到帮助。
答案1
来自NGINX文档:
如果在使用正则表达式定义的位置内使用别名,则该正则表达式应该包含捕获,并且别名应该引用这些捕获(0.7.40),例如:
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
alias /data/w3/images/$1;
}
所以最终这对我有用:
# Nginx
location ~ ^/nhub/public/static/[^/]+/(.*)$ {
alias D:/sitenhub/sitestatic/$1;
}
# Apache HTTPD
AliasMatch "^/nhub/public/static/[^/]+/(.*)$" "D:/sitenhub/sitestatic/$1"
([^/]+
匹配至少一个不是的字符/
,(.*)
是匹配零个或多个任意字符的捕获组,这个捕获组$1
在别名)