Рейтинг:1

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

флаг uz

По какой-то причине на некоторых внешних сайтах ссылки на мой сайт subdomain.example.com выглядят примерно так: <a href="https://subdomain.example.com/https://subdomain.example.com/index.php?id=54597">Link</a>

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

что-то вроде

расположение ~ "^https://subdomain.example.com/index.php$" {
  вернуть 301 /index.php?$query_string;
}
Рейтинг:2
флаг jp

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

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

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

местоположение = /https:/subdomain.example.com/index.php {
    вернуть 301 /index.php$is_args$args;
}

Видеть этот документ для деталей.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.