Можно ли преобразовать URL в запрос GET с переменными и их значениями?

Кажется, вы хотите, чтобы ваши посетители видели ссылки вида domain.ru/razdel/var1_value1/var2_value2/var3_value3/.../var8_value8/ даже в случаях, когда в ссылке отсутствуют некоторые переменные. Вам интересно, можно ли настроить обработку таких URL в nginx или .htaccess, чтобы запросы автоматически преобразовывались в форму domain.ru/razdel.php?var1=value1&var2=value2&var7=value7.
  • 18 марта 2024 г. 16:39
Ответы на вопрос 2
Да, это возможно с помощью файлов конфигурации сервера nginx или .htaccess. 

В nginx можно создать правило перезаписи для обработки URL в виде domain.ru/razdel/var1_value1/var2_value2/var3_value3/.../var8_value8/. Ниже приведен пример конфигурационного файла nginx для этой цели:

```
server {
    ...
    
    location /razdel/ {
        rewrite ^/razdel/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ /razdel.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6&var7=$7&var8=$8 last;
    }
    
    ...
}
```

В файле .htaccess для Apache можно использовать такое правило перезаписи:

```
RewriteEngine On
RewriteRule ^razdel/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ razdel.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6&var7=$7&var8=$8 [L]
```

Таким образом, при обращении к URL вида domain.ru/razdel/var1_value1/var2_value2/var8_value8/, запрос будет автоматически преобразован в форму domain.ru/razdel.php?var1=value1&var2=value2&var8=value8.
давно уже пришли к мнению что роутинг и ЧПУ проще и универсальнее решать прикладным языком, а не средствами веб–сервера.
Похожие вопросы