Added support for the "308 Permanent Redirect" (ticket #877).

This commit is contained in:
Simon Leblanc 2017-04-11 03:13:46 +02:00
parent a965e1d766
commit 8ee2de5e9c
6 changed files with 20 additions and 4 deletions

View File

@ -173,6 +173,7 @@ ngx_http_headers_filter(ngx_http_request_t *r)
case NGX_HTTP_SEE_OTHER: case NGX_HTTP_SEE_OTHER:
case NGX_HTTP_NOT_MODIFIED: case NGX_HTTP_NOT_MODIFIED:
case NGX_HTTP_TEMPORARY_REDIRECT: case NGX_HTTP_TEMPORARY_REDIRECT:
case NGX_HTTP_PERMANENT_REDIRECT:
safe_status = 1; safe_status = 1;
break; break;

View File

@ -24,6 +24,7 @@ our @EXPORT = qw(
HTTP_SEE_OTHER HTTP_SEE_OTHER
HTTP_NOT_MODIFIED HTTP_NOT_MODIFIED
HTTP_TEMPORARY_REDIRECT HTTP_TEMPORARY_REDIRECT
HTTP_PERMANENT_REDIRECT
HTTP_BAD_REQUEST HTTP_BAD_REQUEST
HTTP_UNAUTHORIZED HTTP_UNAUTHORIZED
@ -72,6 +73,7 @@ use constant HTTP_REDIRECT => 302;
use constant HTTP_SEE_OTHER => 303; use constant HTTP_SEE_OTHER => 303;
use constant HTTP_NOT_MODIFIED => 304; use constant HTTP_NOT_MODIFIED => 304;
use constant HTTP_TEMPORARY_REDIRECT => 307; use constant HTTP_TEMPORARY_REDIRECT => 307;
use constant HTTP_PERMANENT_REDIRECT => 308;
use constant HTTP_BAD_REQUEST => 400; use constant HTTP_BAD_REQUEST => 400;
use constant HTTP_UNAUTHORIZED => 401; use constant HTTP_UNAUTHORIZED => 401;

View File

@ -1894,7 +1894,8 @@ ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
if (status == NGX_HTTP_MOVED_PERMANENTLY if (status == NGX_HTTP_MOVED_PERMANENTLY
|| status == NGX_HTTP_MOVED_TEMPORARILY || status == NGX_HTTP_MOVED_TEMPORARILY
|| status == NGX_HTTP_SEE_OTHER || 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); ngx_http_clear_location(r);

View File

@ -75,8 +75,9 @@ static ngx_str_t ngx_http_status_lines[] = {
ngx_null_string, /* "305 Use Proxy" */ ngx_null_string, /* "305 Use Proxy" */
ngx_null_string, /* "306 unused" */ ngx_null_string, /* "306 unused" */
ngx_string("307 Temporary Redirect"), 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) #define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
ngx_string("400 Bad Request"), ngx_string("400 Bad Request"),

View File

@ -83,6 +83,7 @@
#define NGX_HTTP_SEE_OTHER 303 #define NGX_HTTP_SEE_OTHER 303
#define NGX_HTTP_NOT_MODIFIED 304 #define NGX_HTTP_NOT_MODIFIED 304
#define NGX_HTTP_TEMPORARY_REDIRECT 307 #define NGX_HTTP_TEMPORARY_REDIRECT 307
#define NGX_HTTP_PERMANENT_REDIRECT 308
#define NGX_HTTP_BAD_REQUEST 400 #define NGX_HTTP_BAD_REQUEST 400
#define NGX_HTTP_UNAUTHORIZED 401 #define NGX_HTTP_UNAUTHORIZED 401

View File

@ -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[] = static char ngx_http_error_400_page[] =
"<html>" CRLF "<html>" CRLF
"<head><title>400 Bad Request</title></head>" 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, /* 305 */
ngx_null_string, /* 306 */ ngx_null_string, /* 306 */
ngx_string(ngx_http_error_307_page), 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) #define NGX_HTTP_OFF_4XX (NGX_HTTP_LAST_3XX - 301 + NGX_HTTP_OFF_3XX)
ngx_string(ngx_http_error_400_page), ngx_string(ngx_http_error_400_page),
@ -615,7 +624,8 @@ ngx_http_send_error_page(ngx_http_request_t *r, ngx_http_err_page_t *err_page)
if (overwrite != NGX_HTTP_MOVED_PERMANENTLY if (overwrite != NGX_HTTP_MOVED_PERMANENTLY
&& overwrite != NGX_HTTP_MOVED_TEMPORARILY && overwrite != NGX_HTTP_MOVED_TEMPORARILY
&& overwrite != NGX_HTTP_SEE_OTHER && 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; r->err_status = NGX_HTTP_MOVED_TEMPORARILY;
} }