nginx 将特定的 .css url 重写为特定的 .php url

nginx 将特定的 .css url 重写为特定的 .php url

我认为对于任何有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;
}

相关内容