Как настроить в 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 или путь к новой странице.
Добавьте соответствующие локейшены без <code>~*</code> : <br/> и т. д. <br/> <br/> <a href="http://nginx.org/ru/docs/http/request_processing.html#simple_php_site_configuration" rel="nofollow">Как nginx обрабатывает запросы</a>
Поставить перед ним <br/> <code>location ~* "^/(about|works|shops)/$" {</code> <br/> Кто первый совпал - того и тапки!
вероятно можно отдельные правила сделать, но через регулярку вот попробуйте <br/> <code>^/(?!(about|works|shops))[0-9a-z]{5}/$</code> <br/> <a href="https://regex101.com/r/tfQTuy/1" rel="nofollow">https://regex101.com</a>
Похожие вопросы