diff --git a/auto/modules b/auto/modules
index 6a1db63..1af9496 100644
--- a/auto/modules
+++ b/auto/modules
@@ -54,7 +54,7 @@
 
 HTTP_MODULES="$HTTP_MODULES $HTTP_STATIC_MODULE $HTTP_INDEX_MODULE"
 
-if [ $HTTP_REWRITE = YES ]; then
+if [ $HTTP_REWRITE = YES -a $USE_PCRE != DISABLED ]; then
     USE_PCRE=YES
     HTTP_MODULES="$HTTP_MODULES $HTTP_REWRITE_MODULE"
     HTTP_SRCS="$HTTP_SRCS $HTTP_REWRITE_SRCS"
diff --git a/auto/options b/auto/options
index d199614..c912119 100644
--- a/auto/options
+++ b/auto/options
@@ -58,7 +58,7 @@
 
         --with-cc=*)                     CC="$value"                ;;
 
-        --without-pcre)                  USE_PCRE=NO                ;;
+        --without-pcre)                  USE_PCRE=DISABLED          ;;
         --with-pcre=*)                   PCRE="$value"              ;;
         --with-md5=*)                    MD5="$value"               ;;
         --with-zlib=*)                   ZLIB="$value"              ;;
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index d5e1831..00236fa 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -118,30 +118,33 @@
             }
         }
 
-        /* create the tailer iovec and coalesce the neighbouring hunks */
+        if (file) {
+            /* create the tailer iovec and coalesce the neighbouring hunks */
 
-        prev = NULL;
-        iov = NULL;
+            prev = NULL;
+            iov = NULL;
 
-        for ( /* void */; cl && trailer.nelts < IOV_MAX; cl = cl->next) {
-            if (ngx_hunk_special(cl->hunk)) {
-                continue;
+            for ( /* void */; cl && trailer.nelts < IOV_MAX; cl = cl->next) {
+                if (ngx_hunk_special(cl->hunk)) {
+                    continue;
+                }
+
+                if (!ngx_hunk_in_memory_only(cl->hunk)) {
+                    break;
+                }
+
+                if (prev == cl->hunk->pos) {
+                    iov->iov_len += cl->hunk->last - cl->hunk->pos;
+
+                } else {
+                    ngx_test_null(iov, ngx_push_array(&trailer),
+                                  NGX_CHAIN_ERROR);
+                    iov->iov_base = cl->hunk->pos;
+                    iov->iov_len = cl->hunk->last - cl->hunk->pos;
+                }
+
+                prev = cl->hunk->last;
             }
-
-            if (!ngx_hunk_in_memory_only(cl->hunk)) {
-                break;
-            }
-
-            if (prev == cl->hunk->pos) {
-                iov->iov_len += cl->hunk->last - cl->hunk->pos;
-
-            } else {
-                ngx_test_null(iov, ngx_push_array(&trailer), NGX_CHAIN_ERROR);
-                iov->iov_base = cl->hunk->pos;
-                iov->iov_len = cl->hunk->last - cl->hunk->pos;
-            }
-
-            prev = cl->hunk->last;
         }
 
         /*
