Как настроить 301 редирект в NGINX из одной папки в другую с учетом запросов пользователей?

Как я могу изменить мой код редиректа, чтобы получить следующий желаемый формат ссылки: <br/> domain/категория_большая/подкатегория1/ссылка <br/> domain/подкатегория1/ссылка <br/> <br/> Вот мой текущий код: <br/> if ( $request_filename ~ /full_category/category1/.+ ) { <br/> rewrite  /category1/$1 permanent; <br/> } <br/> <br/> Однако в итоге я получаю ссылки вида: <br/> domain/category1/category1///category1//category1//category1//category1//category1//category1/ccылка
  • 2 апреля 2024 г. 12:29
Ответы на вопрос 1
Для настройки 301 редиректа в NGINX из одной папки в другую с учетом запросов пользователей, вам нужно создать правило редиректа в блоке server вашего конфигурационного файла NGINX. Вот пример:

```
server {
    listen 80;
    server_name domain.com;

    location /full_category/category1/ {
        rewrite ^/full_category/category1/(.+)/(.+)$ /$1/$2 redirect;        
    }

    location /category1 {
        # действия по обработке запроса в папке category1
    }
}
```

Это правило редиректа перенаправит запросы с путем /full_category/category1/категория/подкатегория/ссылка на /категория/подкатегория/ссылка. Затем запрос будет обработан в блоке location /category1.

Чтобы изменить ваш текущий код редиректа и получить желаемый формат ссылки domain/категория_большая/подкатегория1/ссылка, вы можете использовать следующий код:

```
if ( $request_uri ~* ^/full_category/category1/(.+)/(.+)/(.+)$ ) {
    rewrite ^/full_category/category1/(.+)/(.+)/(.+)$ /$1_$2/$3 permanent;
}
```

Это правило редиректа будет перенаправлять запросы с путем /full_category/category1/категория/подкатегория/ссылка на /категория_подкатегория/ссылка, как вы и хотели. 

Не забудьте перезапустить NGINX после внесения изменений в конфигурационный файл.
Похожие вопросы