nginx переписываете url prameter - PullRequest
0 голосов
/ 19 мая 2018

Мы осуществляем миграцию программного обеспечения форума и хотим сохранить равноправие наших ссылок.Я пытаюсь переписать URL-адреса в nginx с

/forum/read.php?1,171967,171967#msg-171967

до

/forum/discussion/171967

. Неважно, какая из 171967 строк соответствует.Я пробовал:

rewrite ^/forum/read.php(.*),([0-9]+),(.*)$ /forum/discussion/$2 redirect;

и несколько других вариантов безрезультатно.

1 Ответ

0 голосов
/ 19 мая 2018

Номер сообщения, которое вы пытаетесь захватить, является частью строки запроса и поэтому не является частью нормализованного URI , используемого директивами rewrite и location.См. этот документ для получения дополнительной информации.

Если /forum/read.php не является допустимым URI в новом программном обеспечении форума, вы можете использовать точное совпадение location для его изоляции.

Самый простой способ запустить регулярное выражение над строкой запроса - это блок if.

Например:

location = /forum/read.php {
    if ($args ~ ,([0-9]+),) {
        return 301 /forum/discussion/$1;
    }
}

См. это предупреждение при использовании if.

...