2012-03-10 130 views
1

我花了一個小時尋找答案,但除非你知道詞彙,否則很難搜索。我想要的是簡單的死亡。我有一臺服務器,像這樣:nginx忽略位置部分

server { 
    listen 80; 
    server_name test.dev; 
    root /srv/www; 

    location/{ 
    index foo.html; 
    } 

    location /foo { 
    index foo.html; 
    } 

    location /bar { 
    index foo.html; 
    } 
} 

我想是的/,/富,和/條都指向完全相同的文件。換句話說,我希望位置部分被完全忽略。只需提供我告訴您提供的根目錄中的文件即可。

別名似乎不是答案,不知道它應該服務哪個文件。

回答

1

我可能會使用重寫。

server { 
    listen 80; 
    server_name test.dev; 
    root /srv/www; 

    location/{ 
    index foo.html; 
    rewrite ^/foo(.*)$ /$1 last; 
    rewrite ^/bar(.*)$ /$1 last; 
    break; 
    } 

} 

類似的東西呀,我想你可以從這裏找到答案:)

0

嘗試將每個合格位置重定向到將提供文件的命名位置。

server { 
    ... 
    error_page 418 = @response; 

    location /foo { 
    return 418; 
    } 
    location /bar { 
    return 418; 
    } 
    location @response { 
    index response.html; 
    } 
} 
+0

謝謝您的答覆。雖然我完全相信這會起作用,但當這不是錯誤時,我很不舒服地返回一個錯誤代碼。 – Matthew 2012-03-11 13:05:40

+0

據我所知,默認情況下nginx會將該位置解釋爲文件系統路徑的一部分,但是必須有方法來覆蓋此行爲。 – Matthew 2012-03-11 13:06:48