diff --git a/internal/nodes/http_request_error.go b/internal/nodes/http_request_error.go index cac642c..6e27696 100644 --- a/internal/nodes/http_request_error.go +++ b/internal/nodes/http_request_error.go @@ -11,11 +11,8 @@ func (this *HTTPRequest) write404() { } this.processResponseHeaders(http.StatusNotFound) - - msg := "404 page not found: '" + this.RawURI() + "'" - this.writer.WriteHeader(http.StatusNotFound) - _, _ = this.writer.Write([]byte(msg)) + _, _ = this.writer.Write([]byte("404 page not found: '" + this.requestFullURL() + "'" + " (Request Id: " + this.requestId + ")")) } func (this *HTTPRequest) write50x(err error, statusCode int) { @@ -28,5 +25,5 @@ func (this *HTTPRequest) write50x(err error, statusCode int) { } this.processResponseHeaders(statusCode) this.writer.WriteHeader(statusCode) - _, _ = this.writer.Write([]byte(types.String(statusCode) + " " + http.StatusText(statusCode))) + _, _ = this.writer.Write([]byte(types.String(statusCode) + " " + http.StatusText(statusCode) + " (Request Id: " + this.requestId + ")")) } diff --git a/internal/nodes/http_request_page.go b/internal/nodes/http_request_page.go index 2a6d986..e7abc54 100644 --- a/internal/nodes/http_request_page.go +++ b/internal/nodes/http_request_page.go @@ -88,6 +88,12 @@ func (this *HTTPRequest) doPage(status int) (shouldStop bool) { return true } else if page.BodyType == shared.BodyTypeHTML { + // 这里需要实现设置Status,因为在Format()中可以获取${status}等变量 + if page.NewStatus > 0 { + this.writer.statusCode = page.NewStatus + } else { + this.writer.statusCode = status + } var content = this.Format(page.Body) // 修改状态码 diff --git a/internal/nodes/http_request_plan_expires.go b/internal/nodes/http_request_plan_expires.go index 45e1184..2adae5d 100644 --- a/internal/nodes/http_request_plan_expires.go +++ b/internal/nodes/http_request_plan_expires.go @@ -15,5 +15,5 @@ func (this *HTTPRequest) doPlanExpires() { this.processResponseHeaders(statusCode) this.writer.WriteHeader(statusCode) - _, _ = this.writer.WriteString(serverconfigs.DefaultPlanExpireNoticePageBody) + _, _ = this.writer.WriteString(this.Format(serverconfigs.DefaultPlanExpireNoticePageBody)) } diff --git a/internal/nodes/http_request_reverse_proxy.go b/internal/nodes/http_request_reverse_proxy.go index 276b308..6940835 100644 --- a/internal/nodes/http_request_reverse_proxy.go +++ b/internal/nodes/http_request_reverse_proxy.go @@ -224,8 +224,6 @@ func (this *HTTPRequest) doReverseProxy() { } } - // TODO 清除源站错误次数 - // 特殊页面 if len(this.web.Pages) > 0 && this.doPage(resp.StatusCode) { err = resp.Body.Close() diff --git a/internal/nodes/http_request_traffic_limit.go b/internal/nodes/http_request_traffic_limit.go index 08663b5..405dbe2 100644 --- a/internal/nodes/http_request_traffic_limit.go +++ b/internal/nodes/http_request_traffic_limit.go @@ -17,8 +17,8 @@ func (this *HTTPRequest) doTrafficLimit() { this.writer.WriteHeader(statusCode) if len(config.NoticePageBody) != 0 { - _, _ = this.writer.WriteString(config.NoticePageBody) + _, _ = this.writer.WriteString(this.Format(config.NoticePageBody)) } else { - _, _ = this.writer.WriteString(serverconfigs.DefaultTrafficLimitNoticePageBody) + _, _ = this.writer.WriteString(this.Format(serverconfigs.DefaultTrafficLimitNoticePageBody)) } }