diff --git a/sites/all/modules/unl/unl_migration.php b/sites/all/modules/unl/unl_migration.php
index 80afc7dd3fdc5fd69a1ce2d64f132f3f759a7059..6506762ee29abc00278eb2a6d3c689512c0c3099 100644
--- a/sites/all/modules/unl/unl_migration.php
+++ b/sites/all/modules/unl/unl_migration.php
@@ -113,7 +113,7 @@ class Unl_Migration_Tool
         // Add trailing slash if necessary
         $baseUrl = trim($baseUrl);
         if (substr($baseUrl, -1) != '/') {
-            $baseUrl .= '/';
+            //$baseUrl .= '/';
         }
 
         $this->_frontierPath = $frontierPath;
@@ -175,7 +175,7 @@ class Unl_Migration_Tool
         if ($this->_state == self::STATE_CREATING_NODES) {
             // Update links and then create new page nodes. (Takes a while)
             foreach ($this->_content as $path => $content) {
-                if (in_array($path, $this->_createdContent)) {
+                if (in_array($path, $this->_createdContent, TRUE)) {
                     continue;
                 }
                 if (time() - $start_time > $time_limit) {
@@ -236,9 +236,16 @@ class Unl_Migration_Tool
         $dom->loadHTML($html);
         $navlinksNode = $dom->getElementById('navigation');
     
+        // Check to see if there's a base tag on this page.
+        $base_tags = $dom->getElementsByTagName('base');
+        $page_base = NULL;
+        if ($base_tags->length > 0) {
+          $page_base = $base_tags->item(0)->getAttribute('href');
+        }
+        
         $linkNodes = $navlinksNode->getElementsByTagName('a');
         foreach ($linkNodes as $linkNode) {
-            $this->_processLinks($linkNode->getAttribute('href'), '', '<menu>');
+            $this->_processLinks($linkNode->getAttribute('href'), '', $page_base, '<menu>');
         }
         
         $navlinksUlNode = $navlinksNode->getElementsByTagName('ul')->item(0);
@@ -459,6 +466,13 @@ class Unl_Migration_Tool
         $dom = new DOMDocument();
         $dom->loadHTML($html);
         
+        // Check to see if there's a base tag on this page.
+        $base_tags = $dom->getElementsByTagName('base');
+        $page_base = NULL;
+        if ($base_tags->length > 0) {
+          $page_base = $base_tags->item(0)->getAttribute('href');
+        }
+        
         $pageTitle = '';
         $pageTitleNode = $dom->getElementById('pagetitle');
         if ($pageTitleNode) {
@@ -493,25 +507,28 @@ class Unl_Migration_Tool
         
         $linkNodes = $maincontentNode->getElementsByTagName('a');
         foreach ($linkNodes as $linkNode) {
-            $this->_processLinks($linkNode->getAttribute('href'), $path);
+            $this->_processLinks($linkNode->getAttribute('href'), $path, $page_base);
         }
     
         $linkNodes = $maincontentNode->getElementsByTagName('img');
         foreach ($linkNodes as $linkNode) {
-            $this->_processLinks($linkNode->getAttribute('src'), $path);
+            $this->_processLinks($linkNode->getAttribute('src'), $path, $page_base);
         }
         
         $this->_content[$path] = $maincontentarea;
         $this->_pageTitles[$path] = $pageTitle;
     }
     
-    private function _processLinks($originalHref, $path, $tag = NULL)
+    private function _processLinks($originalHref, $path, $page_base = NULL, $tag = NULL)
     {
         if (substr($originalHref, 0, 1) == '#') {
             return;
         }
         
-        $href = $this->_makeLinkAbsolute($originalHref, $path);
+        if (!$page_base) {
+          $path_base = $path;
+        }
+        $href = $this->_makeLinkAbsolute($originalHref, $page_base);
         
         if (substr($href, 0, strlen($this->_baseUrl)) == $this->_baseUrl) {
             $newPath = substr($href, strlen($this->_baseUrl));
@@ -529,6 +546,15 @@ class Unl_Migration_Tool
     
     private function _makeLinkAbsolute($href, $path)
     {
+        $path_parts = parse_url($path);
+        
+        if ($path_parts['scheme']) {
+            $base_url = $path;
+            $path = '';
+        } else {
+            $base_url = $this->_baseUrl;
+        }
+        
         if (substr($path, -1) == '/') {
             $intermediatePath = $path;
         } else {
@@ -585,6 +611,7 @@ class Unl_Migration_Tool
         
         $absoluteUrl = $parts['scheme'] . '://' . $parts['host'];
         $absoluteUrl .= isset($parts['path']) ? $parts['path'] : '';
+        $absoluteUrl .= isset($parts['query']) ? '?' . $parts['query'] : '';
         $absoluteUrl .= isset($parts['fragment']) ? '#'.$parts['fragment'] : '';
         
         if (
@@ -594,6 +621,7 @@ class Unl_Migration_Tool
         ) {
             $absoluteUrl = $parts['scheme'] . '://' . $parts['host'];
             $absoluteUrl .= isset($parts['path']) ? dirname($parts['path']) . '/' : '';
+            $absoluteUrl .= isset($parts['query']) ? '?' . $parts['query'] : '';
             $absoluteUrl .= isset($parts['fragment']) ? '#'.$parts['fragment'] : '';
         }
         
@@ -770,8 +798,11 @@ class Unl_Migration_Tool
                 //file is a directory
                 $this->_frontierScan($path . $file . '/');
             } else {
+                if (substr($path, 0, 1) == '/') {
+                    $path = substr($path, 1);
+                }
                 $files[] = $file;
-                if ($file == 'index.shtml') {
+                if (in_array($file, $this->_frontierIndexFiles)) {
                     $this->_addSitePath($path);
                 } else {
                     $this->_addSitePath($path . $file);