diff --git a/INSTALL.txt b/INSTALL.txt
index 06c2a2a..4f8004a 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -10,11 +10,11 @@ $conf['stage_file_proxy_use_imagecache_root'] = TRUE;
 
 Default is TRUE.
 
-If this is true (default) then Stage File Proxy will look for /imagecache/ in
+If this is true (default) then Stage File Proxy will look for /styles/ in
 the URL and determine the original file and request that rather than the
 processed file, then send a header to the browser to refresh the image and let
-imagecache handle it. This will speed up future imagecache requests for the
-same original file.
+Drupal handle it. This will speed up future requests for the same original
+file.
 
 $conf['stage_file_proxy_hotlink'] = FALSE;
 
@@ -23,3 +23,12 @@ Default is FALSE.
 If this is true then Stage File Proxy will not transfer the remote file to the
 local machine, it will just serve a 301 to the remote file and let the origin
 webserver handle it.
+
+$conf['stage_file_proxy_origin_dir'] = 'sites/default/files';
+
+Default is 'sites/default/files';
+
+If this is set then Stage File Proxy will use a different path for the remote
+files. This is useful for multisite installations where the sites directory
+contains different names for each url. If this is not set, it defaults to the
+same path as the local site (sites/default/files).
diff --git a/stage_file_proxy.admin.inc b/stage_file_proxy.admin.inc
new file mode 100644
index 0000000..1bd6f61
--- /dev/null
+++ b/stage_file_proxy.admin.inc
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Settings form.
+ */
+function stage_file_proxy_settings() {
+  $form['stage_file_proxy_origin'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Origin server URL'),
+    '#description' => t('URL to the remote site from which missing files will be retrieved.'),
+    '#field_suffix' => t('(no trailing slash)'),
+    '#default_value' => variable_get('stage_file_proxy_origin', NULL),
+    '#required' => TRUE,
+  );
+  $form['stage_file_proxy_origin_dir'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Origin server public file system path'),
+    '#description' => t('Public path of the remote site from which missing files will be retrieved.'),
+    '#field_suffix' => t('(no trailing slash)'),
+    '#default_value' => variable_get('stage_file_proxy_origin_dir',variable_get('file_public_path', conf_path() . '/files')),
+  );
+  $form['stage_file_proxy_use_imagecache_root'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Download source image files'),
+    '#description' => t('If checked, then Stage File Proxy will look for /styles/ in the URL and determine the original file and request that rather than the processed file, then send a header to the browser to refresh the image and let Drupal handle it. This will speed up future requests for the same original file.'),
+    '#default_value' => variable_get('stage_file_proxy_use_imagecache_root', TRUE),
+  );
+  $form['stage_file_proxy_hotlink'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Use 301 Redirect (instead of downloading)'),
+    '#description' => t('If checked, then Stage File Proxy will not transfer the remote file to the local machine; instead, it will serve a 301 Redirect to the remote file and let the origin server handle it.'),
+    '#default_value' => variable_get('stage_file_proxy_hotlink', FALSE),
+  );
+  return system_settings_form($form);
+}
diff --git a/stage_file_proxy.info b/stage_file_proxy.info
index 99c2822..ce61e5f 100644
--- a/stage_file_proxy.info
+++ b/stage_file_proxy.info
@@ -1,8 +1,7 @@
 name = Stage File Proxy
-description = Proxies files from production server so you don't have to transfer them manually
+description = Proxies files from production server so you don't have to transfer them manually.
 core = 7.x
-version=7.x-0.1-dev
-
+configure = admin/config/development/stage_file_proxy
 
 ; Information added by drupal.org packaging script on 2011-11-17
 version = "7.x-1.x-dev"
diff --git a/stage_file_proxy.module b/stage_file_proxy.module
index 3826fbf..db96810 100644
--- a/stage_file_proxy.module
+++ b/stage_file_proxy.module
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Implements hook_menu().
+ */
+function stage_file_proxy_menu() {
+  $items['admin/config/development/stage_file_proxy'] = array(
+    'title' => 'Stage File Proxy',
+    'description' => 'Administer the Stage File Proxy settings.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('stage_file_proxy_settings'),
+    'access arguments' => array('administer site configuration'),
+    'file' => 'stage_file_proxy.admin.inc',
+  );
+  return $items;
+}
+
 /**
  * Implements hook_init().
  * Intercepts certain requests and attempts to hotlink/download the remote
@@ -13,6 +29,11 @@ function stage_file_proxy_init() {
     return;
   }
 
+  // Note if the origin server files location is different. This
+  // must be the exact path for the remote site's public file
+  // system path, and defaults to the local public file system path.
+  $remote_file_dir = trim(variable_get('stage_file_proxy_origin_dir', $file_dir),'/');
+
   $relative_path = drupal_substr($_GET['q'], drupal_strlen($file_dir) + 1);
 
   // get origin server
@@ -28,10 +49,10 @@ function stage_file_proxy_init() {
     }
 
     if (variable_get('stage_file_proxy_hotlink', FALSE)) {
-      header("Location: $server/{$_GET['q']}");
+      header("Location: $server/$remote_file_dir/$relative_path");
       exit;
     }
-    elseif (_stage_file_proxy_fetch($server, $relative_path)) {
+    elseif (_stage_file_proxy_fetch($server, $remote_file_dir, $relative_path)) {
       // Just refresh this request and let the web server work out the mime type, etc.
       header("Location: /{$_GET['q']}");
       exit;
@@ -44,20 +65,22 @@ function stage_file_proxy_init() {
   }
 }
 
-function _stage_file_proxy_fetch($server, $relative_path) {
+function _stage_file_proxy_fetch($server, $remote_file_dir, $relative_path) {
   $dirs = explode('/', $relative_path);
   $filename = array_pop($dirs);
   $tree = array();
   $file_dir = _stage_file_proxy_file_dir();
   $dir_path = $file_dir;
+  $remote_dir_path = $remote_file_dir;
   foreach ($dirs as $dir) {
     $tree[] = $dir;
     $dir_path = $file_dir . '/' . implode('/', $tree);
+    $remote_dir_path = $remote_file_dir . '/' . implode('/', $tree);
     if (!is_dir($dir_path)) {
       mkdir($dir_path);
     }
   }
-  $url = $server . '/' . $dir_path . '/' . rawurlencode($filename);
+  $url = $server . '/' . $remote_dir_path . '/' . rawurlencode($filename);
   $ch = curl_init($url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
