diff --git a/purl.module b/purl.module
index 955b989..75744e7 100644
--- a/purl.module
+++ b/purl.module
@@ -617,6 +617,9 @@ function purl_delete($modifier) {
 function purl_goto($path = '', $options = array(), $http_response_code = 302) {
 
   $options = !is_array($options) ? array() : $options;
+  if (!isset($options['purl'])) {
+    return;
+  }
   $options['absolute'] = TRUE;
 
   if (isset($_GET['destination'])) {
@@ -634,12 +637,10 @@ function purl_goto($path = '', $options = array(), $http_response_code = 302) {
   // the DB), purl_goto() can be left hanging in an infinite redirect loop. We
   // can detect this by comparing the current URL with a rewritten URL. If they
   // are identical, we are entering a loop.
-  if (isset($options['purl'])) {
-    $current_url = url($_GET['q'], array('absolute' => TRUE, 'query' => drupal_get_query_parameters()));
-    if ($url == $current_url) {
-      watchdog('purl', 'Infinite redirect prevented.', array(), WATCHDOG_INFO);
-      return;
-    }
+  $current_url = url($_GET['q'], array('absolute' => TRUE, 'query' => drupal_get_query_parameters()));
+  if ($url == $current_url) {
+    watchdog('purl', 'Infinite redirect prevented.', array(), WATCHDOG_INFO);
+    return;
   }
 
   // Remove newlines from the URL to avoid header injection attacks.
