[nginx] Added support for the "308 Permanent Redirect" (ticket #877).
Maxim Dounin
mdounin at mdounin.ru
Fri Apr 14 16:57:20 UTC 2017
details: http://hg.nginx.org/nginx/rev/be5cfa918bfc
branches:
changeset: 6977:be5cfa918bfc
user: Simon Leblanc <contact at leblanc-simon.eu>
date: Tue Apr 11 03:13:46 2017 +0200
description:
Added support for the "308 Permanent Redirect" (ticket #877).
diffstat:
src/http/modules/ngx_http_headers_filter_module.c | 1 +
src/http/modules/perl/nginx.pm | 2 ++
src/http/ngx_http_core_module.c | 3 ++-
src/http/ngx_http_header_filter_module.c | 3 ++-
src/http/ngx_http_request.h | 1 +
src/http/ngx_http_special_response.c | 14 ++++++++++++--
6 files changed, 20 insertions(+), 4 deletions(-)
diffs (107 lines):
diff --git a/src/http/modules/ngx_http_headers_filter_module.c b/src/http/modules/ngx_http_headers_filter_module.c
--- a/src/http/modules/ngx_http_headers_filter_module.c
+++ b/src/http/modules/ngx_http_headers_filter_module.c
@@ -173,6 +173,7 @@ ngx_http_headers_filter(ngx_http_request
case NGX_HTTP_SEE_OTHER:
case NGX_HTTP_NOT_MODIFIED:
case NGX_HTTP_TEMPORARY_REDIRECT:
+ case NGX_HTTP_PERMANENT_REDIRECT:
safe_status = 1;
break;
diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm
--- a/src/http/modules/perl/nginx.pm
+++ b/src/http/modules/perl/nginx.pm
@@ -24,6 +24,7 @@ our @EXPORT = qw(
HTTP_SEE_OTHER
HTTP_NOT_MODIFIED
HTTP_TEMPORARY_REDIRECT
+ HTTP_PERMANENT_REDIRECT
HTTP_BAD_REQUEST
HTTP_UNAUTHORIZED
@@ -72,6 +73,7 @@ use constant HTTP_REDIRECT
use constant HTTP_SEE_OTHER => 303;
use constant HTTP_NOT_MODIFIED => 304;
use constant HTTP_TEMPORARY_REDIRECT => 307;
+use constant HTTP_PERMANENT_REDIRECT => 308;
use constant HTTP_BAD_REQUEST => 400;
use constant HTTP_UNAUTHORIZED => 401;
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1894,7 +1894,8 @@ ngx_http_send_response(ngx_http_request_
if (status == NGX_HTTP_MOVED_PERMANENTLY
|| status == NGX_HTTP_MOVED_TEMPORARILY
|| status == NGX_HTTP_SEE_OTHER
- || status == NGX_HTTP_TEMPORARY_REDIRECT)
+ || status == NGX_HTTP_TEMPORARY_REDIRECT
+ || status == NGX_HTTP_PERMANENT_REDIRECT)
{
ngx_http_clear_location(r);
diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -75,8 +75,9 @@ static ngx_str_t ngx_http_status_lines[]
ngx_null_string, /* "305 Use Proxy" */
ngx_null_string, /* "306 unused" */
ngx_string("307 Temporary Redirect"),
+ ngx_string("308 Permanent Redirect"),
-#define NGX_HTTP_LAST_3XX 308
+#define NGX_HTTP_LAST_3XX 309
#define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
ngx_string("400 Bad Request"),
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -83,6 +83,7 @@
#define NGX_HTTP_SEE_OTHER 303
#define NGX_HTTP_NOT_MODIFIED 304
#define NGX_HTTP_TEMPORARY_REDIRECT 307
+#define NGX_HTTP_PERMANENT_REDIRECT 308
#define NGX_HTTP_BAD_REQUEST 400
#define NGX_HTTP_UNAUTHORIZED 401
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -89,6 +89,14 @@ static char ngx_http_error_307_page[] =
;
+static char ngx_http_error_308_page[] =
+"<html>" CRLF
+"<head><title>308 Permanent Redirect</title></head>" CRLF
+"<body bgcolor=\"white\">" CRLF
+"<center><h1>308 Permanent Redirect</h1></center>" CRLF
+;
+
+
static char ngx_http_error_400_page[] =
"<html>" CRLF
"<head><title>400 Bad Request</title></head>" CRLF
@@ -336,8 +344,9 @@ static ngx_str_t ngx_http_error_pages[]
ngx_null_string, /* 305 */
ngx_null_string, /* 306 */
ngx_string(ngx_http_error_307_page),
+ ngx_string(ngx_http_error_308_page),
-#define NGX_HTTP_LAST_3XX 308
+#define NGX_HTTP_LAST_3XX 309
#define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
ngx_string(ngx_http_error_400_page),
@@ -615,7 +624,8 @@ ngx_http_send_error_page(ngx_http_reques
if (overwrite != NGX_HTTP_MOVED_PERMANENTLY
&& overwrite != NGX_HTTP_MOVED_TEMPORARILY
&& overwrite != NGX_HTTP_SEE_OTHER
- && overwrite != NGX_HTTP_TEMPORARY_REDIRECT)
+ && overwrite != NGX_HTTP_TEMPORARY_REDIRECT
+ && overwrite != NGX_HTTP_PERMANENT_REDIRECT)
{
r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
}
More information about the nginx-devel
mailing list