По какой-то причине на некоторых внешних веб-сайтах есть ссылки на мой веб-сайт 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;
}
Все 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;
}
См. этот документ для получения подробной информации.