我希望目录索引文件位于我的网站根目录中,但我希望它位于index.html
子目录中/foo
bar.html
IE
- /index.html
- /foo/bar.html
我还希望请求/foo
或/foo/
或/foo/:anything
解析为bar.html
- 为什么我的位置阻止 /foo 不起作用?
- 如何指定 /foo 的位置块?
这是服务器定义:
server {
listen 80;
server_name domain.tld;
port_in_redirect off;
location / {
# ssl is terminated at our load bal
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
root /usr/share/nginx/mysite/public;
index index.html;
add_header Cache-Control "public max-age=600";
add_header "X-UA-Compatible" "IE=Edge,chrome=1";
charset UTF-8;
}
# this location doesn't work <<<<<<<<<<<<<<
location /foo {
root /usr/share/nginx/mysite/public/foo;
index bar.html;
}
# set expiration of assets to 30d for caching
location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
root /usr/share/nginx/mysite/public;
expires 30d;
add_header Cache-Control "public";
log_not_found off;
}
}
编辑:我在该服务器块的底部也有以下内容。
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/www;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
答案1
要bar.html
作为索引文件使用:
location /foo {
index bar.html;
}
如果您希望任何请求/foo/anything
最终/foo/bar.html
使用以下命令:
location = /foo {
try_files /foo/bar.html =404;
}
location /foo/ {
try_files /foo/bar.html =404;
}
您的指令location
有误root
。
在你的配置中,nginx 最终会寻找文件/usr/share/nginx/mysite/public/foo/foo/bar.html