2015-10-13 210 views
0

我正試圖用nginx部署trac。我幾乎有一切工作免除重寫規則來提供靜態文件。我需要重寫這個網址:nginx的重寫規則

http://trac.domain.tldn/chrome/common/feed.png

這一個:

http://trac.domain.tldn/static/htdocs/common/feed.png

我有這樣的代碼,但它不工作:

location ~ /(.*?)/chrome/common/ { 
      rewrite /(.*?)/chrome/common/(.*) /$1/static/htdocs/common/$2 break; 
      root /var/www/domain.tldn/static/trac/static/htdocs/common; 
    } 

你能幫助我呢?由於

+0

Trac的Nginx的文檔需要改進,特別是對[服務靜態文件](http://trac.edgewall.org/wiki/TracNginxRecipe#StaticContent)。我希望儘快重寫,但@ dmitriy-z的回答看起來是正確的。 – RjOllos

回答

2

您可以用下面的代碼做到這一點:

location /chrome/common { 
    rewrite ^/chrome/common/(.*) /static/htdocs/common/$1 permanent; 
} 

或者只是使用一個別名文件路徑:

location /chrome/common { 
    alias /var/www/domain.tldn/static/trac/static/htdocs/common; 
} 
+0

根據您是否安裝了插件和特定於站點的模板,Trac還可以提供來自'/ chrome/'和'/ chrome/site'的文件,因此您可能只想在位置中使用'/ chrome /' ''指令並從'alias'指令去掉'/ common'。 – RjOllos

+0

這工作。謝謝! – lostcitizen