nginx - 301 перенаправляет неправильные URL-адреса, используемые на внешнем сервере веб-сайт

По какой-то причине на некоторых внешних веб-сайтах есть ссылки на мой веб-сайт subdomain.example.com, которые выглядят примерно так: Link

Я не могу исправить эти ссылки, так как я не контролирую эти ссылки. Поэтому вместо отображения ошибки 404 , Я хочу перенаправить https://subdomain.example.com/https://subdomain.example.com/index.php?id=54597 на https://subdomain.example .com / index.php? id = 54597 через nginx, но я не могу найти подходящее местоположение, как только оно включает двоеточие. Есть ли способ заставить это работать?

что-то вроде

location ~ "^https://subdomain.example.com/index.php$" {
  return 301 /index.php?$query_string;
}
1
задан 9 July 2021 в 17:29
1 ответ

Все URI в Nginx начинаются с ведущего / и нормализованы для удаления последовательных // s.

Вы должны изменить свое регулярное выражение на: ^ / https: / subdomain \ .example \ .com / index \ .php $ и поместить его над местоположением блок, который соответствует URI, оканчивающимся на .php .

В качестве альтернативы можно использовать оператор = , чтобы точно соответствовать одному URI, например:

location = /https:/subdomain.example.com/index.php {
    return 301 /index.php$is_args$args;
}

См. этот документ для получения подробной информации.

2
ответ дан 28 July 2021 в 12:59

Теги

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