Все запросы через index.php

nginxwolf nginx-forum на forum.nginx.org
Пт Ноя 19 05:39:55 UTC 2021


Добрый день

У сайта есть Публичка и Админка на одном домене
/ - публичка
/admin/ - админка

Вот это правило apache2 прекрасно работает для админки, но на nginx никак не
получается это сделать
Тут все запросы кроме статики проходят через /admin/index.php в котором
проверяются авторизация и все такое
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) 
RewriteRule ^admin/(.*)$ admin/index.php?_route_=/$1 [L,QSA]

Пример, я открываю php-файл по адресу
/admin/test/1.php

На апаче этот запрос как-то проходит через /admin/index.php в котором я
проверяю авторизацию и все такое и если пользователь не авторизован при
открытии любого php-файла в админке увидит форму входа

На nginx это не работает и php-файл открывается напрямую, просто как
отдельный файл

Все возможные примеры в гугле не работают, вот мой пример, он тоже не
выполняет данную задачу.

  #location /  {
  #  try_files $uri $uri/ @frontend;
  #}

  location !/admin  {
    try_files $uri $uri/ @frontend;
  }

  location /admin {
    try_files $uri $uri/ @backend;
  }

  location ~ \.php$ {
    try_files $uri @frontend @backend;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass $php_sock;
  }

  location @frontend {
    rewrite ^/(.*)$ /index.php?_route_=$1? last;
  }

  location @backend {
    rewrite ^/admin/(.*)$ /admin/index.php?_route_=/$1? last;
  }

Как заставить nginx обрабатывать все запросы (php-файлы) кроме статики через
/admin/index.php?

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,292890,292890#msg-292890



Подробная информация о списке рассылки nginx-ru