From f59bea27e8da3513a2946a4e20714c80102bbb24 Mon Sep 17 00:00:00 2001
From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com>
Date: Wed, 19 Jun 2024 14:08:58 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9B=E5=BB=BA=E9=9D=99=E6=80=81?=
=?UTF-8?q?=E3=80=81PHP=20=E7=BD=91=E7=AB=99=E9=BB=98=E8=AE=A4=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=20404=20=E9=A1=B5=E9=9D=A2=20(#5498)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
backend/app/service/website.go | 3 ++-
backend/app/service/website_utils.go | 24 +++++++++++++++----
frontend/src/lang/modules/en.ts | 3 ++-
frontend/src/lang/modules/tw.ts | 3 ++-
frontend/src/lang/modules/zh.ts | 3 ++-
.../src/views/website/website/html/index.vue | 13 ++++++----
6 files changed, 35 insertions(+), 14 deletions(-)
diff --git a/backend/app/service/website.go b/backend/app/service/website.go
index f94a20bd3..8cc0473b7 100644
--- a/backend/app/service/website.go
+++ b/backend/app/service/website.go
@@ -346,7 +346,8 @@ func (w WebsiteService) CreateWebsite(create request.WebsiteCreate) (err error)
}
if len(create.FtpUser) != 0 && len(create.FtpPassword) != 0 {
- itemID, err := NewIFtpService().Create(dto.FtpCreate{User: create.FtpUser, Password: create.FtpPassword, Path: path.Join(global.CONF.System.BaseDir, "1panel/apps/openresty/openresty/www/sites", website.Alias, "index")})
+ indexDir := path.Join(nginxInstall.GetPath(), "www", "sites", website.Alias, "index")
+ itemID, err := NewIFtpService().Create(dto.FtpCreate{User: create.FtpUser, Password: create.FtpPassword, Path: indexDir})
if err != nil {
global.LOG.Errorf("create ftp for website failed, err: %v", err)
}
diff --git a/backend/app/service/website_utils.go b/backend/app/service/website_utils.go
index 38c4a59e8..089c7dbe3 100644
--- a/backend/app/service/website_utils.go
+++ b/backend/app/service/website_utils.go
@@ -80,18 +80,23 @@ func createIndexFile(website *model.Website, runtime *model.Runtime) error {
if err != nil {
return err
}
+ var (
+ indexPath string
+ indexContent string
+ websiteService = NewIWebsiteService()
+ indexFolder = path.Join(nginxInstall.GetPath(), "www", "sites", website.Alias, "index")
+ )
- indexFolder := path.Join(constant.AppInstallDir, constant.AppOpenresty, nginxInstall.Name, "www", "sites", website.Alias, "index")
- indexPath := ""
- indexContent := ""
switch website.Type {
case constant.Static:
indexPath = path.Join(indexFolder, "index.html")
- indexContent = string(nginx_conf.Index)
+ indexHtml, _ := websiteService.GetDefaultHtml("index")
+ indexContent = indexHtml.Content
case constant.Runtime:
if runtime.Type == constant.RuntimePHP {
indexPath = path.Join(indexFolder, "index.php")
- indexContent = string(nginx_conf.IndexPHP)
+ indexPhp, _ := websiteService.GetDefaultHtml("php")
+ indexContent = indexPhp.Content
}
}
@@ -114,6 +119,13 @@ func createIndexFile(website *model.Website, runtime *model.Runtime) error {
if err := fileOp.WriteFile(indexPath, strings.NewReader(indexContent), 0755); err != nil {
return err
}
+
+ html404, _ := websiteService.GetDefaultHtml("404")
+ path404 := path.Join(indexFolder, "404.html")
+ if err := fileOp.WriteFile(path404, strings.NewReader(html404.Content), 0755); err != nil {
+ return err
+ }
+
return nil
}
@@ -245,12 +257,14 @@ func configDefaultNginx(website *model.Website, domains []model.WebsiteDomain, a
server.UpdateRootProxy([]string{proxy})
case constant.Static:
server.UpdateRoot(rootIndex)
+ server.UpdateDirective("error_page", []string{"404", "/404.html"})
case constant.Proxy:
nginxInclude := fmt.Sprintf("/www/sites/%s/proxy/*.conf", website.Alias)
server.UpdateDirective("include", []string{nginxInclude})
case constant.Runtime:
switch runtime.Type {
case constant.RuntimePHP:
+ server.UpdateDirective("error_page", []string{"404", "/404.html"})
if runtime.Resource == constant.ResourceLocal {
switch runtime.Type {
case constant.RuntimePHP:
diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts
index 910e22100..43d5e4b73 100644
--- a/frontend/src/lang/modules/en.ts
+++ b/frontend/src/lang/modules/en.ts
@@ -2039,8 +2039,9 @@ const message = {
domain404: 'Website page does not exist',
indexHtml: 'Static website default page',
stopHtml: 'Website stop page',
- indePhp: 'PHP website default page',
+ indexPHP: 'PHP website default page',
sslExpireDate: 'Certificate expiration date',
+ website404Helper: 'Website 404 error page only supports PHP runtime environment websites and static websites',
},
php: {
short_open_tag: 'Short tag support',
diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts
index 158ea3886..e03de7f2c 100644
--- a/frontend/src/lang/modules/tw.ts
+++ b/frontend/src/lang/modules/tw.ts
@@ -1898,8 +1898,9 @@ const message = {
domain404: '網站不存在頁面',
indexHtml: '靜態網站預設頁',
stopHtml: '網站停用頁',
- indePhp: 'PHP 網站預設頁',
+ indexPHP: 'PHP 網站預設頁',
sslExpireDate: '憑證過期時間',
+ website404Helper: '網站 404 錯誤頁僅支援 PHP 運行環境網站和靜態網站',
},
php: {
short_open_tag: '短標簽支持',
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index af6939a93..ff7b74f25 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -1900,8 +1900,9 @@ const message = {
domain404: '网站不存在页',
indexHtml: '静态网站默认页',
stopHtml: '网站停用页',
- indePhp: 'PHP 网站默认页',
+ indexPHP: 'PHP 网站默认页',
sslExpireDate: '证书过期时间',
+ website404Helper: '网站 404 错误页仅支持 PHP 运行环境网站和静态网站',
},
php: {
short_open_tag: '短标签支持',
diff --git a/frontend/src/views/website/website/html/index.vue b/frontend/src/views/website/website/html/index.vue
index 7dcbb61c3..51fabd630 100644
--- a/frontend/src/views/website/website/html/index.vue
+++ b/frontend/src/views/website/website/html/index.vue
@@ -9,18 +9,22 @@