From 94a2d4b475cd8f23cd6ef2865d22a78cbce41c69 Mon Sep 17 00:00:00 2001
From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com>
Date: Mon, 11 Dec 2023 18:06:07 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20PHP=20=E9=85=8D=E7=BD=AE=E5=A2=9E?=
 =?UTF-8?q?=E5=8A=A0=20pathinfo=20=E9=85=8D=E7=BD=AE=20(#3269)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Refs https://github.com/1Panel-dev/1Panel/issues/3254
---
 backend/utils/nginx/components/server.go | 31 +++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/backend/utils/nginx/components/server.go b/backend/utils/nginx/components/server.go
index 2e3890e2c..cea31d2a1 100644
--- a/backend/utils/nginx/components/server.go
+++ b/backend/utils/nginx/components/server.go
@@ -281,9 +281,38 @@ func (s *Server) UpdatePHPProxy(proxy []string, localPath string) {
 		Parameters: []string{"fastcgi_params"},
 	})
 	if localPath == "" {
+		block.Directives = append(block.Directives, &Directive{
+			Name:       "set",
+			Parameters: []string{"$real_script_name", "$fastcgi_script_name"},
+		})
+		ifDir := &Directive{
+			Name:       "if",
+			Parameters: []string{"($fastcgi_script_name ~ \"^(.+?\\.php)(/.+)$\")"},
+		}
+		ifDir.Block = &Block{
+			Directives: []IDirective{
+				&Directive{
+					Name:       "set",
+					Parameters: []string{"$real_script_name", "$1"},
+				},
+				&Directive{
+					Name:       "set",
+					Parameters: []string{"$path_info", "$2"},
+				},
+			},
+		}
+		block.Directives = append(block.Directives, ifDir)
 		block.Directives = append(block.Directives, &Directive{
 			Name:       "fastcgi_param",
-			Parameters: []string{"SCRIPT_FILENAME", "$document_root$fastcgi_script_name"},
+			Parameters: []string{"SCRIPT_FILENAME", "$document_root$real_script_name"},
+		})
+		block.Directives = append(block.Directives, &Directive{
+			Name:       "fastcgi_param",
+			Parameters: []string{"SCRIPT_NAME", "$real_script_name"},
+		})
+		block.Directives = append(block.Directives, &Directive{
+			Name:       "fastcgi_param",
+			Parameters: []string{"PATH_INFO", "$path_info"},
 		})
 	} else {
 		block.Directives = append(block.Directives, &Directive{