Я хочу, чтобы индексный файл каталога в корне моего сайта был index.html
но в подкаталоге /foo
Я хочу, чтобы это было bar.html
т.е.
Также мне нужны запросы на /foo
или /foo/
или /foo/:anything
разрешить bar.html
Вот определение сервера:
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
в качестве индексного файла используйте:
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