Задать вопрос
@BaJIepaMoTo6JIok

Регулярное выражение для редиректа nginx?

имеется такая конфига вида
server {
        server_name ~^(?<name>.+?)\.test\.domain\.ru$; 
        root /home/ftp/$name/web/;
}

Рутовые директории имеют названия вида user.name
Можно как то через регулярные выражения редиректить их в строку вида user-name?
К примеру рутовая директория имеет имя ivan.ivanov, и нужно чтобы редиректилось в url: ivan-ivanov.test.domain.ru
В общем чтобы "." заменять на "-"
Сейчас пока там через map все это происходит, но хочется чтобы при добавлении нового каталога руками ничего не добавлять
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 2
Lynn
@Lynn
nginx, js, css
Ну так запихайте регулярку в map. Примерно так:

map $dash_name $dot_name {
  default $dash_name;
  ~^(?<p1>\w+)-(?<p2>\w+)$ $p1.$p2;
}

server {
  server_name ~^(?<dash_name>.+?)\.test\.domain\.ru$; 
  root /home/ftp/$dot_name/web/;
}
Ответ написан
Комментировать
Разбейте просто в регулярке (?<name>.+?) матч на две части и дальше собирайте их обратно через какой хотите символ.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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