我认为对于任何有nginx
知识的人来说这都是件容易的事。
我正在调用这样的 URL:
/site-preview/css/custom-styles.css?org=myorg
该文件custom-styles.css
实际上不存在。因此,我想重写 URL 以实际提供此服务:
/css/custom-styles.php?org=myorg
我来自 apache 世界,我的.htaccess
文件中有这个功能。
在我的nginx
配置中我尝试过类似的事情:
location /site-preview {
rewrite ^/site-preview/css/custom-styles.css?(.*) /css/custom-styles.php?$1 last;
}
和:
location /site-preview {
rewrite ^css/custom-styles.css?(.*) /css/custom-styles.php?$1 last;
}
以及拥有rewrite
一个location
块的外部。
提前致谢。
答案1
nginx 重写文档(http://nginx.org/en/docs/http/ngx_http_rewrite_module.html) 指出,除非您以“?”结束替换字符串,否则所有先前的 qstring 变量都会被附加。这意味着您不需要(也可能不应该)将 qstring 变量添加到替换中。
此外,我会尽可能具体地说明位置(添加../css/..路径:
location /site-preview/css {
# this is a blind rewrite passing qstr along
rewrite custom-styles.css /css/custom-styles.php last;
# this one does NOT pass along qstr (using the trailing '?')
rewrite custom-styles.css /css/custom-styles.php? last;
}