diff --git a/src/http/modules/ngx_http_userid_filter.c b/src/http/modules/ngx_http_userid_filter.c
index b7ace1c..8fc6a94 100644
--- a/src/http/modules/ngx_http_userid_filter.c
+++ b/src/http/modules/ngx_http_userid_filter.c
@@ -284,9 +284,6 @@
 
     /* TODO: mutex for sequencers */
 
-    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-                   "service: %d", r->in_addr);
-
     if (conf->enable == NGX_HTTP_USERID_V1) {
         if (conf->service == NGX_CONF_UNSET) {
             ctx->uid_set[0] = 0;
diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c
index b8b2461..492ba6f 100644
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -257,11 +257,6 @@
     *h = ngx_http_find_location_config;
 
 
-    ngx_init_array(cmcf->phases[NGX_HTTP_MISC_PHASE].handlers,
-                   cf->cycle->pool, 10, sizeof(ngx_http_handler_pt),
-                   NGX_CONF_ERROR);
-    cmcf->phases[NGX_HTTP_MISC_PHASE].type = NGX_DECLINED;
-
     ngx_init_array(cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers,
                    cf->cycle->pool, 10, sizeof(ngx_http_handler_pt),
                    NGX_CONF_ERROR);
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 06c6165..d242ebf 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -14,7 +14,7 @@
 static void ngx_http_phase_event_handler(ngx_event_t *rev);
 static void ngx_http_run_phases(ngx_http_request_t *r);
 static ngx_int_t ngx_http_find_location(ngx_http_request_t *r,
-                                        ngx_array_t *locations);
+                                        ngx_array_t *locations, size_t len);
 
 static void *ngx_http_core_create_main_conf(ngx_conf_t *cf);
 static char *ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf);
@@ -486,7 +486,7 @@
 
     cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
 
-    rc = ngx_http_find_location(r, &cscf->locations);
+    rc = ngx_http_find_location(r, &cscf->locations, 0);
 
     if (rc == NGX_HTTP_INTERNAL_SERVER_ERROR) {
         return rc;
@@ -551,7 +551,7 @@
 
 
 static ngx_int_t ngx_http_find_location(ngx_http_request_t *r,
-                                        ngx_array_t *locations)
+                                        ngx_array_t *locations, size_t len)
 {
     ngx_int_t                  n, rc;
     ngx_uint_t                 i, found;
@@ -604,14 +604,7 @@
                 return NGX_HTTP_LOCATION_EXACT;
             }
 
-            clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
-
-#if 0
-            ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-                           "p:%d c:%d", clcf->name.len, clcfp[i]->name.len);
-#endif
-
-            if (clcf->name.len > clcfp[i]->name.len) {
+            if (len > clcfp[i]->name.len) {
                 /* the previous match is longer */
                 break;
             }
@@ -625,7 +618,7 @@
         clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
 
         if (clcf->locations.nelts) {
-            rc = ngx_http_find_location(r, &clcf->locations);
+            rc = ngx_http_find_location(r, &clcf->locations, len);
 
             if (rc != NGX_OK) {
                 return rc;
@@ -1629,6 +1622,10 @@
     lcf->alias = alias;
     lcf->root = value[1];
 
+    if (!alias && lcf->root.data[lcf->root.len - 1] == '/') {
+        lcf->root.len--;
+    }
+
     return NGX_CONF_OK;
 }
 
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 75bb6b3..6c0e7a1 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -23,7 +23,6 @@
 
     NGX_HTTP_FIND_CONFIG_PHASE,
 
-    NGX_HTTP_MISC_PHASE,
     NGX_HTTP_ACCESS_PHASE,
     NGX_HTTP_CONTENT_PHASE,
 
