2016-11-16 105 views
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直接提供的,它也會被重寫。

回答

0

sub_filter_types *;用Nginx爲我工作1.13.6