2

Прежде всего, я использую Nginx 1.12.1. Я хочу сделать следующее:

  • У меня есть список URL, каждый URL должен возвращать 410 для целей SEO
  • Я хочу включить этот список в качестве карты в мою конфигурацию nginx (потому что это очень длинный список)
  • 410 должны быть настроены и выглядеть как страница 404 (для людей, которые случайно попадают туда)

Соответствующий фрагмент конфигурации:

map $uri $gone {
    include gone.map;
}

server {
    ...
    error_page 410 /410.html;

    # works
    location ~^/gone-location-1 {
        return 410;
    }

    # doesn't work
    if ($gone) {
        return 410;
    }

    location / {
        root /app/public/;
    }
}

gone.map:

~^/gone-location-2 1;

В обоих случаях я делаю return 410 , но результат отличается. В случае "не работает" nginx показывает только страницу 410 по умолчанию, а в случае "работает" он вернет 410.html. В обоих случаях nginx правильно возвращает код состояния 410.

Почему это происходит? Мне действительно нравится идея файла карты, и я не хочу создавать 250 местоположений, чтобы сделать эту работу. Есть идеи, как этого добиться?

Изменить: я только что попробовал еще одну вещь. Я получаю точно такой же результат с 404 вместо 410.

1 ответ1

0

Поздний ответ, но я сам столкнулся с этой проблемой и нашел решение.

server {

    error_page 410 @gone;

    if ($gone_var) {
        return 410;
    }

    location @gone{
        root /app/public/;
        rewrite ^(.*)$ /410.html break;
    }

    location / {
        root /app/public/;
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .