diff --git a/link.module b/link.module
index e17c26f..46395e4 100644
--- a/link.module
+++ b/link.module
@@ -49,6 +49,7 @@ function link_field_info() {
         'title_label_use_field_label' => FALSE,
         'title_maxlength' => 128,
         'enable_tokens' => 1,
+        'check_system_path' => 0,
         'display' => array(
           'url_cutoff' => 80,
         ),
@@ -151,6 +152,13 @@ function link_field_instance_settings_form($field, $instance) {
     );
   }
 
+  $form['check_system_path'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Convert URLs to internal system paths'),
+    '#default_value' => isset($instance['settings']['check_system_path']) ? $instance['settings']['check_system_path'] : 0,
+    '#description' => t('Check to see if the provided URL is a system path, if so the system path is stored instead of the provided URL.'),
+  );
+
   $form['display'] = array(
     '#tree' => TRUE,
   );
@@ -378,6 +386,51 @@ function _link_process(&$item, $delta, $field, $entity) {
     $item['url'] = trim($item['url']);
   }
 
+  // Optionally identify a possible system path.
+  if (!empty($field['widget']['default_value'][$delta]['check_system_path'])) {
+    // These variables are used to ensure
+    global $base_url;
+
+    // Work out the correct base_path to use based on the HTTPS settings.
+    if (variable_get('https', FALSE) && isset($GLOBALS['base_secure_url'])) {
+      $real_base_url = $GLOBALS['base_secure_url'];
+    }
+    elseif (isset($GLOBALS['base_insecure_url']) && $GLOBALS['base_insecure_url'] != $base_url) {
+      $real_base_url = $GLOBALS['base_insecure_url'];
+    }
+    else {
+      $real_base_url = $base_url;
+    }
+
+    // Check if either the site's absolute URL or the relative base URL are at
+    // the start of the URL, if so remove them.
+    $base_paths = array(
+      $real_base_url,
+      base_path(),
+    );
+    $paths_to_test = array();
+    foreach ($base_paths as $path) {
+      // Verify the path is at the beginning of the URL string.
+      if (strpos($item['url'], $path) === 0) {
+        $strlen = drupal_strlen($path);
+        $paths_to_test[] = drupal_substr($item['url'], $strlen);
+      }
+    }
+    $paths_to_test[] = $item['url'];
+
+    // Remove any possible duplicates.
+    $paths_to_test = array_unique($paths_to_test);
+
+    // Check each of the paths to see if one of them is a system path.
+    foreach ($paths_to_test as $path) {
+      $normal_path = drupal_get_normal_path($path);
+      if ($normal_path != $item['url']) {
+        $item['url'] = $normal_path;
+        break;
+      }
+    }
+  }
+
   // If no attributes are set then make sure $item['attributes'] is an empty
   // array, so $field['attributes'] can override it.
   if (empty($item['attributes'])) {
