@mxup

В чем может быть проблема неправильного 301 перенаправления в конфигурации на Web сервере nginx + php-fm?

Здравствуйте, подскажите пожалуйста, в чем может быть проблема неправильного перенаправления на своем Web сервере работающем на Nginx 1.22.1 + Php-Fm 8.2 (Server API: FPM/FastCGI) А на хостинге работающем на: nginх + apache + fastCCGI (Server API: CGI/FastCGI) работает все нормально

В чем конкретно проблема: Например, в панели управления администратором (именно там эта проблема возникает) при нажатии на кнопку «Сохранить» или «Редактировать» осуществляется POST запрос по кнопку Submit, пользователь должен оставаться на этой же странице, но его перекидывает на главную страницу сайта с параметрами, идущими после знака вопроса в адресной строке.

То есть, например, я нахожусь в панели администратора по адресу

https://site.ru/admin/index.php?controller=settings

Редактирую какую-то информацию в полях и нажимаю кнопку «Сохранить» я должен остаться на этой же странице

https://site.ru/admin/index.php?controller=settings

Так и происходит, если сервер нормально настроен, то есть это нормально работает на хостинге: nginх + apache + fastCCGI (Server API: CGI/FastCGI)

Я установил Web сервер на свой компьютер, у меня работает Nginx 1.22.1 + Php-Fm 8.2 (Server API: FPM/FastCGI)

И я скопировав сайт на свой вебсервер, ну и конечно же настроив конфигурационный файл nginx по советам разработчиков этого движка сайта (хотя может они и неправильно советы давали) получил проблему с неправильным редиректом на главную страницу сайта с параметрами которые были в адресной строке, которые были у меня в панели администратора.

То есть при нажатии на кнопку «Редактировать» или «Сохранить происходит перенаправление с адреса:

https://site.ru/admin/index.php?controller=settings

на

https://site.ru/?controller=settings

В конфигурационрный Nginx файл, отвечающий за каталог /admin добавлен только этот код, ну и часть кода относящаяся к настройке FastCGI:

Код:
location = / {
      try_files $uri /index.php?$args;

   }

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

location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
	
 include fastcgi_params;
 fastcgi_param DOCUMENT_ROOT /var/www/site.ru/;
 fastcgi_param SCRIPT_FILENAME /var/www/site.ru$fastcgi_script_name;
 fastcgi_param PATH_TRANSLATED /var/www/site.ru$fastcgi_script_name;
 fastcgi_param QUERY_STRING $query_string;
 fastcgi_param REQUEST_METHOD $request_method;
 fastcgi_param CONTENT_TYPE $content_type;
 fastcgi_param CONTENT_LENGTH $content_length;
 fastcgi_param HTTPS on; 
 fastcgi_intercept_errors on;	
     }

Но либо эта инструкция работает неправильно, либо вообще что-то неправильно указано в настройках Php Подскажите в чем может быть проблема, Может кто то с таким сталкивался?

Ошибок в логах (Сделал логирование POST и логирование правил Rewrite) Nginx никаких нет

Вот прикрепил скриншот из панели разработчика Веб Браузера, в которой видна разница перенаправления работающего на нормально настроенном севере и на моём.

Нормально работающий сайт (при нажатии на кнопку сохранить пользователь остается на той же странице)

Файл с Post запросом: 670a3fb362c5b621425816.jpeg Заголовки POST запроса: 670a3fbaa3368413391401.jpeg

Файл с Get запросом: 670a3fc315c9f426143669.jpeg Заголовки Get запроса: 670a3fc8d22a2013239492.jpeg

Хреново работащий сайт (при нажатии на кнопку происходит перенаправление на главную страницу)

Файл с Post запросом 670a3f5051cd1485539583.jpeg И заголовки POST запроса: 670a3f8297c2f590094258.jpeg

Файл с Get запросом 670a3f9cc2481208565337.jpeg И Заголовки с Get запросом 670a3fa649a69599848116.jpeg

Проблема врядли в самих скриптах сайта, здесь что то не так с настройками Nginx либо PHP Или все таки лучше поставить ещё Apache на сервер?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@mxup Автор вопроса
Нашёл проблему! :D
В файле:
/etc/nginx/snippets/fastcgi-php.conf
имеются такие строки (причём дефолтные, насколько помню, я ничего не трогал в этом файле при установки Nginx и PHP-FM)
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;


Закомментировал эту строку и всё заработало!
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
#fastcgi_param PATH_INFO $path_info;

Не знаю правда пока что, как это повлияет на остальную работу сайта, но думаю все будет нормально.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
Скорее всего на Вашем сервере на ошибочной странице погружаются не все js
потому как похоже на дефолтное поведение формы, вместо задуманного ajax запроса, который должен был сформироваться этими самыми скриптами.
P.S. Посмотрев на приведенные примеры, не уверен, что в скриптах причина, но и исключить ее тоже надо. Поэтому пусть ответ повисит.
Больше похоже что рут путь админки в конфиге не указан.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы