Nginx возвращает корневой индекс сайта вместо a 404
ответ для несуществующих файлов, т.е. пытающийся переписать файлы, которые не существуют, который нежелателен. В то время как я вижу, что теме ответили здесь, я не вижу, как она относится к моей конфигурации и думала с помощью IF
операторы в Nginx являются злыми?
Объект этого состоит в том, чтобы перенаправить /bar.html, и/bar/запрашивает к / панели. Подаваемые данные из bar.html. Запрос на/bar.random возвратит сайты содержание /index.html вместо 404. Запрос на файл, который не существует, должен возвратить 404 ошибочных страницы.
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri.html /index.html @extensionless-html =404;
}
rewrite ^(/.+)/$ $1 permanent;
rewrite ^(/.+)\.html$ $1 permanent;
location @extensionless-html {
rewrite ^(.*)$ $1.html last;
}
Я также попробовал следующее, которое привело к тому же reponse:
location / {
try_files $uri $uri.html /index.html @extensionless-html =404;
if (-f $request_filename) {
# redirect /foo/ to /foo
rewrite ^(/.+)/$ $1 permanent;
# redirect /foo.html to /foo
rewrite ^(/.+)\.html$ $1 permanent;
}
}
location @extensionless-html {
rewrite ^(.*)$ $1.html last;
}
На основании отзывов, удаление index.html
из try_files
позволяет исправлять ошибки 404 по желанию.
location / {
try_files $uri $uri.html @extensionless-html =404;
}
# redirect /foo/ to /foo
rewrite ^(/.+)/$ $1 permanent;
# redirect /foo.html to /foo but
rewrite ^(/.+)\.html$ $1 permanent;
location @extensionless-html {
rewrite ^(.*)$ $1.html last;
}