a71a57
diff --git a/mod_wsgi.c b/mod_wsgi.c
a71a57
index c65344e..b32fc5c 100644
a71a57
--- a/mod_wsgi.c
a71a57
+++ b/mod_wsgi.c
a71a57
@@ -500,6 +500,7 @@ typedef struct {
a71a57
     int script_reloading;
a71a57
     int error_override;
a71a57
     int chunked_request;
a71a57
+    int map_head_to_get;
a71a57
 
a71a57
     int enable_sendfile;
a71a57
 
a71a57
@@ -669,6 +670,11 @@ static void *wsgi_merge_server_config(apr_pool_t *p, void *base_conf,
a71a57
     else
a71a57
         config->chunked_request = parent->chunked_request;
a71a57
 
a71a57
+    if (child->map_head_to_get != -1)
a71a57
+        config->map_head_to_get = child->map_head_to_get;
a71a57
+    else
a71a57
+        config->map_head_to_get = parent->map_head_to_get;
a71a57
+
a71a57
     if (child->enable_sendfile != -1)
a71a57
         config->enable_sendfile = child->enable_sendfile;
a71a57
     else
a71a57
@@ -704,6 +710,7 @@ typedef struct {
a71a57
     int script_reloading;
a71a57
     int error_override;
a71a57
     int chunked_request;
a71a57
+    int map_head_to_get;
a71a57
 
a71a57
     int enable_sendfile;
a71a57
 
a71a57
@@ -737,6 +744,7 @@ static WSGIDirectoryConfig *newWSGIDirectoryConfig(apr_pool_t *p)
a71a57
     object->script_reloading = -1;
a71a57
     object->error_override = -1;
a71a57
     object->chunked_request = -1;
a71a57
+    object->map_head_to_get = -1;
a71a57
 
a71a57
     object->enable_sendfile = -1;
a71a57
 
a71a57
@@ -820,6 +828,11 @@ static void *wsgi_merge_dir_config(apr_pool_t *p, void *base_conf,
a71a57
     else
a71a57
         config->chunked_request = parent->chunked_request;
a71a57
 
a71a57
+    if (child->map_head_to_get != -1)
a71a57
+        config->map_head_to_get = child->map_head_to_get;
a71a57
+    else
a71a57
+        config->map_head_to_get = parent->map_head_to_get;
a71a57
+
a71a57
     if (child->enable_sendfile != -1)
a71a57
         config->enable_sendfile = child->enable_sendfile;
a71a57
     else
a71a57
@@ -880,6 +893,7 @@ typedef struct {
a71a57
     int script_reloading;
a71a57
     int error_override;
a71a57
     int chunked_request;
a71a57
+    int map_head_to_get;
a71a57
 
a71a57
     int enable_sendfile;
a71a57
 
a71a57
@@ -1229,6 +1243,14 @@ static WSGIRequestConfig *wsgi_create_req_config(apr_pool_t *p, request_rec *r)
a71a57
             config->chunked_request = 0;
a71a57
     }
a71a57
 
a71a57
+    config->map_head_to_get = dconfig->map_head_to_get;
a71a57
+
a71a57
+    if (config->map_head_to_get < 0) {
a71a57
+        config->map_head_to_get = sconfig->map_head_to_get;
a71a57
+        if (config->map_head_to_get < 0)
a71a57
+            config->map_head_to_get = 2;
a71a57
+    }
a71a57
+
a71a57
     config->enable_sendfile = dconfig->enable_sendfile;
a71a57
 
a71a57
     if (config->enable_sendfile < 0) {
a71a57
@@ -7993,6 +8015,40 @@ static const char *wsgi_set_chunked_request(cmd_parms *cmd, void *mconfig,
a71a57
     return NULL;
a71a57
 }
a71a57
 
a71a57
+static const char *wsgi_set_map_head_to_get(cmd_parms *cmd, void *mconfig,
a71a57
+                                            const char *f)
a71a57
+{
a71a57
+    if (cmd->path) {
a71a57
+        WSGIDirectoryConfig *dconfig = NULL;
a71a57
+        dconfig = (WSGIDirectoryConfig *)mconfig;
a71a57
+
a71a57
+        if (strcasecmp(f, "Off") == 0)
a71a57
+            dconfig->map_head_to_get = 0;
a71a57
+        else if (strcasecmp(f, "On") == 0)
a71a57
+            dconfig->map_head_to_get = 1;
a71a57
+        else if (strcasecmp(f, "Auto") == 0)
a71a57
+            dconfig->map_head_to_get = 2;
a71a57
+        else
a71a57
+            return "WSGIMapHEADToGET must be one of: Off | On | Auto";
a71a57
+    }
a71a57
+    else {
a71a57
+        WSGIServerConfig *sconfig = NULL;
a71a57
+        sconfig = ap_get_module_config(cmd->server->module_config,
a71a57
+                                       &wsgi_module);
a71a57
+
a71a57
+        if (strcasecmp(f, "Off") == 0)
a71a57
+            sconfig->map_head_to_get = 0;
a71a57
+        else if (strcasecmp(f, "On") == 0)
a71a57
+            sconfig->map_head_to_get = 1;
a71a57
+        else if (strcasecmp(f, "Auto") == 0)
a71a57
+            sconfig->map_head_to_get = 2;
a71a57
+        else
a71a57
+            return "WSGIMapHEADToGET must be one of: Off | On | Auto";
a71a57
+    }
a71a57
+
a71a57
+    return NULL;
a71a57
+}
a71a57
+
a71a57
 static const char *wsgi_set_enable_sendfile(cmd_parms *cmd, void *mconfig,
a71a57
                                             const char *f)
a71a57
 {
a71a57
@@ -8463,14 +8519,15 @@ static void wsgi_build_environment(request_rec *r)
a71a57
      * might change the content and/or headers.
a71a57
      */
a71a57
 
a71a57
-#if AP_SERVER_MAJORVERSION_NUMBER >= 2
a71a57
-    if (r->method_number == M_GET && r->header_only &&
a71a57
-        r->output_filters->frec->ftype < AP_FTYPE_PROTOCOL)
a71a57
-        apr_table_setn(r->subprocess_env, "REQUEST_METHOD", "GET");
a71a57
-#else
a71a57
-    if (r->method_number == M_GET && r->header_only)
a71a57
-        apr_table_setn(r->subprocess_env, "REQUEST_METHOD", "GET");
a71a57
-#endif
a71a57
+    if (config->map_head_to_get == 2) {
a71a57
+        if (r->method_number == M_GET && r->header_only &&
a71a57
+            r->output_filters->frec->ftype < AP_FTYPE_PROTOCOL)
a71a57
+            apr_table_setn(r->subprocess_env, "REQUEST_METHOD", "GET");
a71a57
+    }
a71a57
+    else if (config->map_head_to_get == 1) {
a71a57
+        if (r->method_number == M_GET)
a71a57
+            apr_table_setn(r->subprocess_env, "REQUEST_METHOD", "GET");
a71a57
+    }
a71a57
 
a71a57
     /* Determine whether connection uses HTTPS protocol. */
a71a57
 
a71a57
@@ -15856,6 +15913,8 @@ static const command_rec wsgi_commands[] =
a71a57
         NULL, OR_FILEINFO, "Enable/Disable overriding of error pages."),
a71a57
     AP_INIT_TAKE1("WSGIChunkedRequest", wsgi_set_chunked_request,
a71a57
         NULL, OR_FILEINFO, "Enable/Disable support for chunked requests."),
a71a57
+    AP_INIT_TAKE1("WSGIMapHEADToGET", wsgi_set_map_head_to_get,
a71a57
+        NULL, OR_FILEINFO, "Enable/Disable mapping of HEAD to GET."),
a71a57
 
a71a57
 #ifndef WIN32
a71a57
 #if AP_SERVER_MAJORVERSION_NUMBER >= 2