[英]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.