@TerritoryOfPeace
Изучаю php

ЧПУ роутинг и переменные в NGINX?

Всем привет!) Есть такие настройки NGINX:
server {

  listen 80 default_server;
  listen [::]:80 default_server;
  root /var/www/html;

  index index.php index.html index.htm index.nginx-debian.html;

  server_name _;

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
  }

  location ~ /\.ht {
    deny all;
  }
 
 location /myapp {
    alias /var/www/html/myapp;
    index 1.php; 

    try_files $uri $uri/ =404;
}  

location /([a-zA-Z0-9_-]+) {
    alias /var/www/html/myapp2;
    index 2.php;

    try_files $uri $uri/ =404;
  }

}

Почему последний location не работает?
Можно вообще так сделать чтобы при запросе /myapp проксирование было на 1.php,
А если там любая другая переменная, то на 2.php?

И как прописать location типа /$var/$var?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Вы забыли символ ~, указывающий на RegExp:
location ~ /([a-zA-Z0-9_-]+) {

А в вашем варианте Nginx ищет директорию вот буквально таким именем: ([a-zA-Z0-9_-]+)

P.S. Впрямую переменные в location использовать толи нельзя, толи можно, но с плясками. Пэтому люди выворачиваются вот таким способом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы