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 @@ - + +
+ + {{ $t('website.website404Helper') }} + +
- @@ -89,7 +93,6 @@ const submit = async () => { const content = view.value.state.doc.toString(); await UpdateDefaultHtml({ type: type.value, content: content }); MsgSuccess(i18n.global.t('commons.msg.updateSuccess')); - handleClose(); } catch (error) { } finally { loading.value = false; @@ -102,6 +105,6 @@ defineExpose({ acceptParams }); .default-html { width: 100%; min-height: 300px; - margin-top: 20px; + margin-top: 10px; }