簡體   English   中英

nginx 從子文件夾提供索引文件

[英]nginx serve index file from subfolders

我想從根文件夾提供一個索引文件,從根目錄提供一個子文件夾中的索引文件。

我的 nginx 服務器配置如下所示:

server {

    listen       80;
    server_name  localhost;
    root /data/;
    index  index.html index.htm index.txt;

    location / {
    }

    location /a {
        alias   /data/a/;
    }

}

我的目錄結構如下:

/data/:
a  index.txt

/data/a:
index.txt

如果我然后做curl localhost ,我會得到文件/data/index.txt的內容。 但是curl /localhost/a給了我一個301 curl localhost/a/index.txt有效。

為什么我不能用curl /localhost/a訪問我的 index.txt ?

我嘗試在location /a塊中使用root而不是alias ,還嘗試為 location /a指定index.txt ,但沒有成功。

我看到類似的帖子,例如Nginx 位置配置(子文件夾),但還沒有找到答案。

index指令適用於以/結尾的 URI:

所以URI /給你/index.txt的內容, /a/給你`/a/index.txt 的內容。

如果您為 Nginx 提供目錄的 URI(但沒有尾隨/ ),則默認行為是重定向到相同的 URI,但帶有尾隨/

這就是index指令的工作方式。 有關詳細信息,請參閱 此文檔


如果您想要默認行為以外的其他內容,則必須使用try_files手動完成。 有關詳細信息,請參閱此文檔

例如,要通過提供不帶尾隨/的目錄的 URI 來返回index.txt文件的內容,請使用:

root /data;

location / {
    try_files $uri $uri/index.txt =404;
}

請注意,在此示例或您的問題中的示例中, location /a { ... }不是必需的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM