Для реализации редиректа с одного URL на большое количество других URL в Nginx, можно воспользоваться использованием модуля map. Этот модуль позволяет создать список соответствий для определения конечного URL для каждого исходного URL.
Пример конфигурации для редиректа с использованием модуля map:
```nginx
map $uri $new_uri {
/old-url-1/ /new-url-1/;
/old-url-2/ /new-url-2/;
/old-url-3/ /new-url-3/;
default /default-url/;
}
server {
listen 80;
server_name example.com;
if ($new_uri) {
return 301 $new_uri;
}
return 404;
}
```
В данном примере, для каждого исходного URL (/old-url-1/, /old-url-2/, /old-url-3/) задан соответствующий конечный URL (/new-url-1/, /new-url-2/, /new-url-3/). Если введенный URL не соответствует ни одному из указанных, то будет выполнен редирект на дефолтный URL (/default-url/).
Чтобы оптимизировать редирект 301 для массива из примерно 300 URL с добавлением приставки к каждому из них, можно воспользоваться скриптом или программой, которая будет генерировать соответствия для модуля map на основе списка URL.
Пример скрипта на Python для генерации списка соответствий:
```python
urls = [
"/url-1",
"/url-2",
"/url-3",
# Добавить все необходимые URL
]
redirect_prefix = "/new-prefix"
for url in urls:
print(f"{url} {redirect_prefix}{url};")
```
Далее сгенерированный список соответствий можно вставить в конфигурацию Nginx. Таким образом, вы избежите раздувания строки с указанием каждого URL в конфигурации.