Bug 61975 - Error page reports an ErrorDocument problem when a RewriteRule has set the status code
Summary: Error page reports an ErrorDocument problem when a RewriteRule has set the st...
Status: NEW
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: Core (show other bugs)
Version: 2.4.27
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-01-08 16:59 UTC by Michael Kaufmann
Modified: 2022-02-09 12:51 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Kaufmann 2018-01-08 16:59:10 UTC
When a RewriteRule has set the status code, the generated error page may contain the phrase "Additionally, a 301 Moved Permanently error was encountered while trying to use an ErrorDocument to handle the request." But there is no ErrorDocument problem. A RewriteRule has changed the status code to 301.


Configuration:

# redirect HTTP to HTTPS
RewriteRule ^/(.*)$ https://www.example.com/$1 [R=301,L]


Request (it has two Content-Length headers, so httpd generates an error page):

curl -v --data "a=b" -H "Content-Length: 1" -H "Content-Length: 10" "http://www.example.com/"


Response:

< HTTP/1.1 400 Bad Request
< Date: Mon, 08 Jan 2018 16:38:52 GMT
< Server: Apache
< Connection: close
< Content-Type: text/html; charset=iso-8859-1
< 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<p>Additionally, a 301 Moved Permanently
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
Comment 1 Marc Stern 2022-02-09 12:48:27 UTC
I have the same behaviour in another case, with mod_security2.

Example:
  # Used to hide server response body (more complex rule in real)
  SecRule RESPONSE_STATUS 400 "phase:3,status:400"
  ErrorDocument 400 /my_error_page.html
Output:
  Bad Request
  Your browser sent a request that this server could not understand.
  Additionally, a 400 Bad Request error was encountered while trying
  to use an ErrorDocument to handle the request.

This is really a major ennoyance.
I don't see any work-around.
Comment 2 Marc Stern 2022-02-09 12:51:47 UTC
(In reply to Marc Stern from comment #1)
My example is for a reverse proxy where the server sends a 400 status