Как настроить перенаправление (редирект) в Nginx для использования ЧПУ?

Как можно объединить две конфигурации nginx для обработки URL двух разных типов, используя значения переменных $page и $value для последующего вывода содержимого?
  • 7 мая 2024 г. 19:10
Ответы на вопрос 2
Для настройки перенаправления (редиректа) в Nginx для использования ЧПУ, следует добавить следующие строки в конфигурационный файл сервера:

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

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}
```

Данная конфигурация позволит обрабатывать ЧПУ URL, например, преобразовывая URL `http://example.com/about` в `http://example.com/index.php?page=about`.

Чтобы объединить две конфигурации Nginx для обработки URL двух разных типов, следует использовать директиву `map` для определения значений переменных на основе условий. Например:

```
map $uri $page {
    /page1 "value1";
    /page2 "value2";
}

map $uri $value {
    /page1 "content1";
    /page2 "content2";
}

server {
    listen 80;
    server_name example.com;

    location / {
        try_files $uri $uri/ /index.php?page=$page&value=$value;
    }
}
```

Таким образом, при обработке URL `http://example.com/page1`, Nginx будет использовать переменные $page и $value с соответствующими значениями для передачи их в обработчик (например, в index.php).
Второе регулярное выражение у вас работает случайно. 

Конструкция:

(/?)+

Вызывает несколько вопросов

А вообще:

location / {
    try_files $uri $uri/ @fallback;
}

location @fallback {
    rewrite "^/([^/]+)/?([^/]+)?/?$" /index.php?page=$1&value=$2&$args last;
}
Похожие вопросы