Прежде всего, я использую 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.