2016-10-04 48 views
0

我有一個很簡單的虛擬主機的配置:奇怪的行爲使用所拍攝的命名組時定義別名

server { 
    listen 80 default_server; 
    server_name datavis.dev.localserver.fr; 

    root /var/www; 

    location ~ ^\/datavis\/(?<datarep>[\w]+) { 
     alias /var/www/data-${datarep}-front; 
     autoindex on; 
    } 

}

我有2只顯示目錄2周的index.html:/無功/網絡/ DATA- test1的前方和/ var /網絡/數據test2的前期

當我嘗試在我的瀏覽器http://datavis.dev.localserver.fr/datavis/test1/我有這個回報率在錯誤日誌:

2016/10/04 17:36:43 [error] 4614#4614: *1 opendir() "/var/www/data-test1-fron" failed (2: No such file or directory), client: 192.168.56.1, server: datavis.dev.localserver.fr, request: "GET /datavis/info/ HTTP/1.1", host: "datavis.dev.localserver.fr" 

最後一封信被刪除...有誰知道爲什麼?

回答

0

您的別名不以/結尾,但autoindex需要它並從路徑中除去最後一個字符。 index index.html也不會工作,因爲結果路徑將是/var/www/data-test-frontindex.html。所以,你需要的是增加/

location ~ ^\/datavis\/(?<datarep>[\w]+)/ { 
    alias /var/www/data-${datarep}-front/; 
    autoindex on; 
} 
+0

謝謝非常 ! –

1

雖然沒有明確指出,但是當在正則表達式位置中包含時,the example in the manual顯示在alias語句上構造的整個URI。

所以,儘管這並不直接回答你的問題,工作可選配置可能是:

location ~ ^/datavis/(\w+)(.*)$ { 
    alias /var/www/data-$1-front$2; 
    autoindex on; 
} 

顯然命名捕獲將工作太。

+0

謝謝,是的,它的工作原理:), 我只是想太知道爲什麼我不得不添加第二個捕獲組,看起來像一個錯誤給我 –