diff --git a/sites/all/modules/unl/cron.php b/sites/all/modules/unl/cron.php
index a4e417593a42cc36bd52f246570eb4657bf31f5b..f04a230e4ab3b58adff372eb8f6ed97c260aa6ce 100644
--- a/sites/all/modules/unl/cron.php
+++ b/sites/all/modules/unl/cron.php
@@ -65,7 +65,7 @@ function unl_add_aliases() {
   $query = db_select('unl_sites_aliases', 'a');
   $query->join('unl_sites', 's', 's.site_id = a.site_id');
   $query->fields('s', array('uri'));
-  $query->fields('a', array('site_alias_id', 'uri'));
+  $query->fields('a', array('site_alias_id', 'base_uri', 'path'));
   $query->condition('a.installed', 0);
   $results = $query->execute()->fetchAll();
   
@@ -74,7 +74,7 @@ function unl_add_aliases() {
       ->fields(array('installed' => 1))
       ->condition('site_alias_id', $row->site_alias_id)
       ->execute();
-    if (unl_add_alias($row->uri, $row->a_uri)) {
+    if (unl_add_alias($row->uri, $row->base_uri, $row->path, $row->site_alias_id)) {
       db_update('unl_sites_aliases')
         ->fields(array('installed' => 2))
         ->condition('site_alias_id', $row->site_alias_id)
@@ -91,7 +91,7 @@ function unl_add_aliases() {
 
 function unl_remove_aliases() {
   $query = db_select('unl_sites_aliases', 'a');
-  $query->fields('a', array('site_alias_id', 'uri'));
+  $query->fields('a', array('site_alias_id', 'base_uri', 'path'));
   $query->condition('a.installed', 3);
   $results = $query->execute()->fetchAll();
   
@@ -100,7 +100,7 @@ function unl_remove_aliases() {
       ->fields(array('installed' => 4))
       ->condition('site_alias_id', $row->site_alias_id)
       ->execute();
-    if (unl_remove_alias($row->uri)) {
+    if (unl_remove_alias($row->base_uri, $row->path, $row->site_alias_id)) {
       db_delete('unl_sites_aliases')
         ->condition('site_alias_id', $row->site_alias_id)
         ->execute();
@@ -164,22 +164,8 @@ function unl_add_site($site_path, $uri, $clean_url, $db_prefix, $site_id) {
   $command = "$php_path sites/all/modules/drush/drush.php -y --uri=$uri site-install unl_profile --sites-subdir=$sites_subdir --db-url=$db_url --db-prefix=$db_prefix --clean-url=$clean_url";
   shell_exec($command);
   
-  $stub_token = '  # %UNL_CREATION_TOOL_STUB%';
-  $htaccess = file_get_contents(DRUPAL_ROOT . '/.htaccess');
-  $stub_pos = strpos($htaccess, $stub_token);
-  if ($stub_pos === FALSE) {
-    return FALSE;
-  }
-  $new_htaccess = substr($htaccess, 0, $stub_pos)
-                . "  # %UNL_START_SITE_ID_$site_id%\n";
-  foreach (array('misc', 'modules', 'sites', 'themes') as $drupal_dir) {
-    $new_htaccess .=  "  RewriteRule $site_path/$drupal_dir/(.*) $drupal_dir/$1\n";
-  }
-  $new_htaccess .= "  # %UNL_END_SITE_ID_$site_id%\n\n" 
-                 . $stub_token
-                 . substr($htaccess, $stub_pos + strlen($stub_token));
+  unl_add_site_to_htaccess($site_id, $site_path, FALSE);
   
-  file_put_contents(DRUPAL_ROOT . '/.htaccess', $new_htaccess);
   return TRUE;
 }
 
@@ -233,23 +219,83 @@ function unl_remove_site($site_path, $uri, $db_prefix, $site_id) {
                 ;
   file_put_contents(DRUPAL_ROOT . '/.htaccess', $new_htaccess);
   
+  unl_remove_site_from_htaccess($site_id, FALSE);
+  
   return TRUE;
 }
 
-function unl_add_alias($site_uri, $alias_uri) {
+function unl_add_alias($site_uri, $base_uri, $path, $alias_id) {
+  $alias_uri = $base_uri . $path;
   $real_config_dir = _unl_get_sites_subdir($site_uri);
   $alias_config_dir = _unl_get_sites_subdir($alias_uri, FALSE);
-  return symlink($real_config_dir, DRUPAL_ROOT . '/sites/' . $alias_config_dir);
+  $result = symlink($real_config_dir, DRUPAL_ROOT . '/sites/' . $alias_config_dir);
+  
+  if ($path) {
+    unl_add_site_to_htaccess($alias_id, $path, TRUE);
+  }
+  
+  return TRUE;
 }
 
-function unl_remove_alias($alias_uri) {
+function unl_remove_alias($base_uri, $path, $alias_id) {
+  $alias_uri = $base_uri . $path;
   $alias_config_dir = _unl_get_sites_subdir($alias_uri, FALSE);
-  return unlink(DRUPAL_ROOT . '/sites/' . $alias_config_dir);
+  unlink(DRUPAL_ROOT . '/sites/' . $alias_config_dir);
+  
+  unl_remove_site_from_htaccess($alias_id, TRUE);
+  
+  return TRUE;
 }
 
+function unl_add_site_to_htaccess($site_id, $site_path, $is_alias) {
+  if ($is_alias) {
+    $site_or_alias = 'ALIAS';
+  }
+  else {
+    $site_or_alias = 'SITE';
+  }
+  
+  $stub_token = '  # %UNL_CREATION_TOOL_STUB%';
+  $htaccess = file_get_contents(DRUPAL_ROOT . '/.htaccess');
+  $stub_pos = strpos($htaccess, $stub_token);
+  if ($stub_pos === FALSE) {
+    return FALSE;
+  }
+  $new_htaccess = substr($htaccess, 0, $stub_pos)
+                . "  # %UNL_START_{$site_or_alias}_ID_{$site_id}%\n";
+  foreach (array('misc', 'modules', 'sites', 'themes') as $drupal_dir) {
+    $new_htaccess .=  "  RewriteRule $site_path/$drupal_dir/(.*) $drupal_dir/$1\n";
+  }
+  $new_htaccess .= "  # %UNL_END_{$site_or_alias}_ID_{$site_id}%\n\n" 
+                 . $stub_token
+                 . substr($htaccess, $stub_pos + strlen($stub_token));
+  
+  file_put_contents(DRUPAL_ROOT . '/.htaccess', $new_htaccess);
+}
 
-
-
+function unl_remove_site_from_htaccess($site_id, $is_alias) {
+  if ($is_alias) {
+    $site_or_alias = 'ALIAS';
+  }
+  else {
+    $site_or_alias = 'SITE';
+  }
+  
+  $htaccess = file_get_contents(DRUPAL_ROOT . '/.htaccess');
+  $site_start_token = "\n  # %UNL_START_{$site_or_alias}_ID_{$site_id}%";
+  $site_end_token = "  # %UNL_END_{$site_or_alias}_ID_{$site_id}%\n";
+  
+  $start_pos = strpos($htaccess, $site_start_token);
+  $end_pos = strpos($htaccess, $site_end_token);
+  
+  if ($start_pos === FALSE || $end_pos === FALSE) {
+    return FALSE;
+  }
+  $new_htaccess = substr($htaccess, 0, $start_pos)
+                . substr($htaccess, $end_pos + strlen($site_end_token))
+                ;
+  file_put_contents(DRUPAL_ROOT . '/.htaccess', $new_htaccess);
+}
 
 
 
diff --git a/sites/all/modules/unl/unl.install b/sites/all/modules/unl/unl.install
index b337818dc0cb01f6d2fd788c52ae69c85d1aa6bf..eae46f20e5a260c0cae638e7f4f4f5be4c165b5f 100644
--- a/sites/all/modules/unl/unl.install
+++ b/sites/all/modules/unl/unl.install
@@ -77,7 +77,12 @@ function unl_schema() {
         'unsigned' => TRUE,
         'not null' => TRUE,
       ),
-      'uri' => array(
+      'base_uri' => array(
+        'type'     => 'varchar',
+        'length'   => 255,
+        'not null' => TRUE,
+      ),
+      'path' => array(
         'type'     => 'varchar',
         'length'   => 255,
         'not null' => TRUE,
@@ -90,7 +95,7 @@ function unl_schema() {
     ),
     'primary key' => array('site_alias_id'),
     'unique keys' => array(
-      'alias_uri' => array('uri'),
+      'alias_uri' => array('base_uri', 'path'),
     ),
     'foreign keys' => array(
       'aliased_site' => array(
@@ -231,3 +236,22 @@ function unl_update_7105() {
     'default'  => '',
   ));
 }
+
+function unl_update_7106() {
+  db_drop_unique_key('unl_sites_aliases', 'alias_uri');
+  
+  db_change_field('unl_sites_aliases', 'uri', 'base_uri', array(
+    'type'     => 'varchar',
+    'length'   => 255,
+    'not null' => TRUE,
+  ));
+  
+  db_add_field('unl_sites_aliases', 'path', array(
+    'type'     => 'varchar',
+    'length'   => 255,
+    'not null' => TRUE,
+    'default'  => '',
+  ));
+  
+  db_add_unique_key('unl_sites_aliases', 'alias_uri', array('base_uri', 'path'));
+}
diff --git a/sites/all/modules/unl/unl.module b/sites/all/modules/unl/unl.module
index 60df190836ac065765f2ea47ba2b8c76c944b75a..29d479fe61bdbc3866fda78c185525cfaeb2a391 100644
--- a/sites/all/modules/unl/unl.module
+++ b/sites/all/modules/unl/unl.module
@@ -387,6 +387,10 @@ function unl_url_outbound_alter(&$path, &$options, $original_path) {
     $generic_user = FALSE;
   }
 
+  if (isset($options['https'])) {
+    return;
+  }
+  
   $options['https'] = (bool) (variable_get('https', 0) && !$generic_user);
 }
 
@@ -560,7 +564,7 @@ function unl_get_alternate_base_uris() {
     return array();
   }
   $rows = db_query(
-  	"SELECT s.uri AS uri, a.uri AS a_uri "
+  	"SELECT s.uri, a.base_uri, a.path "
     . "FROM {$shared_prefix}unl_sites AS s "
     . "LEFT JOIN {$shared_prefix}unl_sites_aliases AS a "
     . "  ON s.site_id = a.site_id "
@@ -574,8 +578,8 @@ function unl_get_alternate_base_uris() {
   
   $uris = array($rows[0]->uri);
   foreach ($rows as $row) {
-    if ($row->a_uri) {
-      $uris[] = $row->a_uri;
+    if ($row->base_uri . $row->path) {
+      $uris[] = $row->base_uri . $row->path;
     }
   }
   
diff --git a/sites/all/modules/unl/unl_site_creation.php b/sites/all/modules/unl/unl_site_creation.php
index 3519ab41df4f4fa2e567d8cb94b0610cca776639..fa8ce3d052692c38d60f615b2081da72bc30339c 100644
--- a/sites/all/modules/unl/unl_site_creation.php
+++ b/sites/all/modules/unl/unl_site_creation.php
@@ -66,7 +66,7 @@ function unl_site_create_submit($form, &$form_state) {
   $site_path = $form_state['values']['site_path'];
   $clean_url = $form_state['values']['clean_url'];
   
-  $uri = url($site_path, array('absolute' => TRUE));
+  $uri = url($site_path, array('absolute' => TRUE, 'https' => FALSE));
   
   $clean_url = intval($clean_url);
   
@@ -293,15 +293,21 @@ function unl_alias_create($form, &$form_state) {
     '#options' => $site_list,
     '#required' => TRUE,
   );
-    
-  $form['root']['alias_uri'] = array(
+  
+  $form['root']['base_uri'] = array(
     '#type'          => 'textfield',
-    '#title'         => t('Alias URL'),
-    '#description'   => t('Full URL for the new alias.'),
-    '#default_value' => t('http://newsite.example.com/'),
+    '#title'         => t('Alias Base URL'),
+    '#description'   => t('The base URL for the new alias.'),
+    '#default_value' => url('', array('https' => FALSE)),
     '#required'      => TRUE,
   );
   
+  $form['root']['path'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Path'),
+    '#description'   => t('Path for the new alias.'),
+  );
+  
   $form['root']['submit'] = array(
     '#type'  => 'submit',
     '#value' => 'Create Alias',
@@ -312,8 +318,9 @@ function unl_alias_create($form, &$form_state) {
 
 function unl_alias_create_submit($form, &$form_state) {
   db_insert('unl_sites_aliases')->fields(array(
-    'site_id' => $form_state['values']['site'],
-    'uri'     => $form_state['values']['alias_uri'],
+    'site_id'  => $form_state['values']['site'],
+    'base_uri' => $form_state['values']['base_uri'],
+    'path'     => $form_state['values']['path'],
   ))->execute();
 }
 
@@ -351,13 +358,13 @@ function unl_alias_list($form, &$form_state) {
     ->orderByHeader($headers);
   $query->join('unl_sites', 's', 's.site_id = a.site_id');
   $query->fields('s', array('uri'));
-  $query->fields('a', array('site_alias_id', 'uri', 'installed'));
+  $query->fields('a', array('site_alias_id', 'base_uri', 'path', 'installed'));
   $sites = $query->execute()->fetchAll();
   
   foreach ($sites as $site) {
     $form['root']['alias_list']['rows'][$site->site_alias_id] = array(
       'site_uri' => array('#prefix'  => $site->uri),
-      'alias_uri' => array('#prefix' => $site->a_uri),
+      'alias_uri' => array('#prefix' => $site->base_uri . $site->path),
       'installed' => array('#prefix' => _unl_get_install_status_text($site->installed)),
       'remove'    => array(
         '#type'          => 'checkbox',