Nginx переписывая файлы, которые не существуют

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;
}
0
задан 23 May 2017 в 15:41
1 ответ

На основании отзывов, удаление 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;
}
0
ответ дан 5 December 2019 в 13:00

Теги

Похожие вопросы