2
我遇到nginx的sub_filter
重寫規則無法處理CSS文件的問題。我正在爲路徑(/site
)上的內容提供內容,並且需要在JS & CSS中的所有URL都正確添加前綴。通過nginx的sub_filter在CSS和JS中重寫路徑
我在CSS中鏈接時指定了MIME類型。從模板:
<link href="/static/css/site.css" type="text/css" rel="stylesheet" />
Nginx已經啓用子過濾器,我已經明確規定,包括text/css
:
location /site {
access_log /opt/logs/test/nginx-access-site.log combined if=$loggable;
error_log /opt/logs/test/nginx-errors-site.log error;
rewrite ^(/site)$ $1/;
rewrite ^/site(.+) $1 break;
sub_filter "test.domain.tld" "test.domain.tld/site";
sub_filter "'/" "'/site/";
sub_filter '"/' '"/site/';
sub_filter "http:" "https:";
sub_filter_types text/html text/css text/javascript;
sub_filter_once off;
include proxy_params;
proxy_pass http://site_test$1$is_args$args;
proxy_redirect http://test.domain.tld/ https://test.domain.tld/site/;
}
的CSS文件的引用是否正確改寫。從HTML輸出:
<link href="/site/static/css/site.css" type="text/css" rel="stylesheet" />
的問題是它不是CSS文件中改寫,所以圖像路徑是不正確的:
.sortable th .asc {
background-image: url("/static/img/up_arrow.gif");
}
我已經試過是沒有任何的區別過於寬鬆:
sub_filter_types *;
我誤解了使用sub_filter
?我認爲,因爲CSS是由nginx直接提供的,它也會被重寫。