我希望网站根目录中的目录索引文件位于子目录中,但我希望它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;
}
作为
bar.html
索引文件使用:如果您希望任何请求
/foo/anything
最终被/foo/bar.html
使用:在你的
location
你有错误的root
指令。在您的配置中,nginx 最终会寻找文件
/usr/share/nginx/mysite/public/foo/foo/bar.html