Как настроить в nginx перенаправление с возможностью исключений?

Как можно модифицировать правило переадресации URL, чтобы оно исключало конкретные адреса, такие как "/about/", "/works/", и "/shops/", и применяло переадресацию только к URL с 5 буквами?
  • 25 декабря 2023 г. 14:37
Ответы на вопрос 4
Для настройки в nginx перенаправления с возможностью исключений, вы можете использовать модуль ngx_http_rewrite_module. 

Вот пример конфигурации, которая перенаправляет все URL с 5 буквами на новую страницу, исключая "/about/", "/works/" и "/shops/":

```nginx
server {
    listen 80;
    server_name example.com;

    location / {
        rewrite ^/(?!about/|works/|shops/)[a-zA-Z]{5}$ /new-page/ permanent;
    }

    location /new-page/ {
        # Конфигурация для новой страницы
    }
}
```

В этом примере, `rewrite` использует регулярное выражение `(?!about/|works/|shops/)` для исключения адресов "/about/", "/works/" и "/shops/". Затем оно проверяет, что URL состоит из ровно 5 букв `[a-zA-Z]{5}`. Если условия выполняются, происходит перенаправление на `/new-page/`. 

Вы можете изменить `/new-page/` на нужный вам URL или путь к новой странице.
Добавьте соответствующие локейшены без ~* : 
и т. д.

Как nginx обрабатывает запросы
Поставить перед ним 
location ~* "^/(about|works|shops)/$" {
Кто первый совпал - того и тапки!
вероятно можно отдельные правила сделать, но через регулярку вот попробуйте 
^/(?!(about|works|shops))[0-9a-z]{5}/$
https://regex101.com
Похожие вопросы