diff --git a/path_alias_xt.module b/path_alias_xt.module
index 9f2f148..97fa532 100755
--- a/path_alias_xt.module
+++ b/path_alias_xt.module
@@ -94,6 +94,33 @@ function path_alias_xt_url_inbound_alter(&$path, $original_path, $path_language)
     $func = function_exists('mb_strrpos') ? 'mb_strrpos' : 'strrpos';

     $candidate_alias = $original_path;
+
+    // If Redirect module exists we must check for an active redirect.
+    if (module_exists('redirect')) {
+      // Get schema version info for Redirect module.
+      $redirect_schema_version = db_select('system', 's')
+        ->fields('s', array('schema_version'))
+        ->condition('name', 'redirect')
+        ->execute()
+        ->fetchField();
+
+      $query = db_select('redirect', 'r')
+        ->fields('r', array('rid'))
+        ->condition('source', $candidate_alias);
+
+      // Status field has been added to redirect table to fix infinite loops:
+      // https://www.drupal.org/node/1796596.
+      if ($redirect_schema_version >= 7101) {
+        $query->condition('status', 1);
+      }
+
+      // If there is an active redirect, do nothing.
+      if ($query->execute()->fetchField()) {
+        return;
+      }
+    }
+
     while ($pos = $func($candidate_alias, '/')) {
       // If the truncated path exists as a menu item (incl. paged views), abort.
       // E.g.: we won't replace and extend the user alias 'admin' in this path:
