diff --git a/includes/file.inc b/includes/file.inc
index 6e2e5cb..a74ec40 100644
--- a/includes/file.inc
+++ b/includes/file.inc
@@ -479,6 +479,11 @@ function file_ensure_htaccess() {
  *   The default is TRUE which indicates a private and protected directory.
  */
 function file_save_htaccess($directory, $private = TRUE) {
+  // Don't create .htaccess files if 'auto_create_htaccess' variable is FALSE.
+  if (!variable_get('auto_create_htaccess', TRUE)) {
+    return;
+  }
+
   if (file_uri_scheme($directory)) {
     $directory = file_stream_wrapper_uri_normalize($directory);
   }
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index 3633bae..5976d81 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -951,6 +951,18 @@ class FileDirectoryTest extends FileTestCase {
     // Verify contents of .htaccess file.
     $file = file_get_contents(file_default_scheme() . '://.htaccess');
     $this->assertEqual($file, "SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006\nOptions None\nOptions +FollowSymLinks", t('The .htaccess file contains the proper content.'), 'File');
+
+    // Remove .htaccess file to then test that it does not get re-created when
+    // auto_create_htaccess=FALSE.
+    @drupal_unlink(file_default_scheme() . '://.htaccess');
+    $this->assertFalse(is_file(file_default_scheme() . '://.htaccess'), t('Successfully removed the .htaccess file in the files directory.'), 'File');
+    variable_set('auto_create_htaccess', FALSE);
+    file_ensure_htaccess();
+    $this->assertFalse(is_file(file_default_scheme() . '://.htaccess'), t('Did not re-created the .htaccess file in the files directory (auto_create_htaccess=FALSE).'), 'File');
+
+    // Create .htaccess file for remaining tests.
+    variable_del('auto_create_htaccess');
+    file_ensure_htaccess();
   }
 
   /**
