diff -Naur path_redirect/path_redirect.admin.inc path_redirect-NEW/path_redirect.admin.inc
--- path_redirect/path_redirect.admin.inc	2009-12-02 11:19:15.000000000 +0000
+++ path_redirect-NEW/path_redirect.admin.inc	2010-03-08 11:28:34.000000000 +0000
@@ -442,6 +442,18 @@
     '#title' => t('Allow users to bypass redirects by adding %code to the URL.', array('%code' => variable_get('clean_url', 0) ? '?redirect=no' : '&redirect=no')),
     '#default_value' => variable_get('path_redirect_allow_bypass', 0),
   );
+  $form['path_redirect_retain_query_string'] = array(
+    '#type' => 'radios',
+    '#title' => t('Incoming URL query string handling'),
+    '#default_value' => variable_get('path_redirect_retain_query_string', 0),
+    '#options' => array(
+      t('Ignore query string'), 
+      t('Replace query string on redirect URL'),
+      t('Append to query string on redirect URL'),
+    ),
+    '#description' => t("Allow query strings on the source URL to carry forward to the redirected URL. 'Ignore query string' will discard a query string on an incoming URL and use the query string stored with the redirect URL if any. 'Replace query string' will use a query string on an incoming URL and ignore the query string stored with the redirect URL if any. 'Append query string' will merge the query string on an incoming URL with the query string stored with the redirect URL if any (query string components from the incoming URL will take precedence)."),
+  );
+
   $form['path_redirect_auto_redirect'] = array(
     '#type' => 'checkbox',
     '#title' => t('Automatically create redirects when URL aliases are changed.'),
diff -Naur path_redirect/path_redirect.module path_redirect-NEW/path_redirect.module
--- path_redirect/path_redirect.module	2009-12-02 10:54:25.000000000 +0000
+++ path_redirect-NEW/path_redirect.module	2010-03-08 11:34:20.000000000 +0000
@@ -143,6 +143,16 @@
   }
 
   if ($redirect) {
+    if (variable_get('path_redirect_retain_query_string', 0) == 1 && !empty($query)) {
+      // Replace query string on redirect URL
+      // Use the query string on an incoming URL and ignore the query string stored with the redirect URL if any.
+      $redirect['query'] = $query;
+    }
+    else if (variable_get('path_redirect_retain_query_string', 0) == 2) {
+      // Append to query string on redirect URL
+      // Values from the requested will override those specified in the redirect if they collide.
+      $redirect['query'] = array_merge($redirect['query'], $query);
+    }
     // Create the absolute redirection URL.
     $redirect['redirect_url'] = url($redirect['redirect'], array('query' => $redirect['query'], 'fragment' => $redirect['fragment'], 'absolute' => TRUE));
 
@@ -657,6 +667,7 @@
 
 function path_redirect_variables() {
   return array(
+    'path_redirect_retain_query_string' => 0,
     'path_redirect_redirect_warning' => 0,
     'path_redirect_allow_bypass' => 0,
     'path_redirect_auto_redirect' => 1,
