--- path_redirect.module        2007-10-06 20:33:20.672026250 -0500
+++ path_redirect.module.new    2007-10-06 20:38:21.726841000 -0500
@@ -25,7 +25,12 @@ function path_redirect_help($section) {
 function path_redirect_init() {
   // check through the redirects
   // see if this page is one of those
-  $path = db_escape_string($_GET['q']);
+  $path = urldecode(trim($_SERVER['REQUEST_URI'], '/'));
+  if(preg_match('/^?q=/', $path) {
+    // Reformat URL and query string if this is not a clean URL
+    $path = preg_replace(array('/^?q=/', '/&/'), array('', '?'), $path, 1);
+  }
+  $path = drupal_get_normal_path($path);
   $r = db_fetch_object(db_query("SELECT redirect, query, fragment, type FROM {path_redirect} WHERE path = '%s'", $path));
   if ($r) {
     drupal_goto($r->redirect, ($r->query ? $r->query: NULL), ($r->fragment ? $r->fragment : NULL), $r->type);
@@ -248,9 +253,6 @@ function path_redirect_edit_validate($fo
   elseif (strstr($form_values['path'], '#')) {
     form_set_error('path', t('You cannot redirect from a fragment anchor.'));
   }
-  elseif (strstr($form_values['path'], '?')) {
-    form_set_error('path', t('You cannot currently include a query in your redirect <strong>from</strong> path.'));
-  }
   elseif (!valid_url($form_values['path'])) {
     form_set_error('path', t('The redirect <strong>from</strong> path does not appear valid. This must be a local Drupal path.'));
   }
