diff --git a/redirect.admin.inc b/redirect.admin.inc
index 901fac7..5ebfc8d 100644
--- a/redirect.admin.inc
+++ b/redirect.admin.inc
@@ -71,6 +71,9 @@ function redirect_list_form($form, &$form_state) {
   foreach ($redirects as $rid => $redirect) {
     $row = array();
     $redirect->source_options = array_merge($redirect->source_options, array('alias' => TRUE, 'language' => redirect_language_load($redirect->language)));
+    if ($redirect->language_neutral_source) {
+      unset($redirect->source_options['language']);
+    }
     $source_url = redirect_url($redirect->source, $redirect->source_options);
     $redirect_url = redirect_url($redirect->redirect, array_merge($redirect->redirect_options, array('alias' => TRUE)));
     $row['source'] = l($source_url, $redirect->source, $redirect->source_options);
@@ -278,6 +281,12 @@ function redirect_edit_form($form, &$form_state, $redirect = NULL) {
     '#default_value' => $redirect->status_code,
     '#options' => array(0 => t('Default (@default)', array('@default' => variable_get('redirect_default_status_code', 301)))) + redirect_status_code_options(),
   );
+  $form['advanced']['language_neutral_source'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('"From" is language neutral'),
+    '#description' => t('Should the "From" field be language neutral?'),
+    '#default_value' => $redirect->language_neutral_source,
+  );
 
   $form['override'] = array(
     '#type' => 'checkbox',
@@ -413,7 +422,7 @@ function redirect_edit_form_validate($form, &$form_state) {
 
   if (empty($form_state['values']['override'])) {
     if ($existing = redirect_load_by_source($redirect->source, $redirect->language)) {
-      if ($redirect->rid != $existing->rid && $redirect->language == $existing->language) {
+      if ($redirect->rid != $existing->rid && $redirect->language == $existing->language && $redirect->language_neutral_source == $existing->language_neutral_source) {
         // The "from" path should not conflict with another redirect
         $form_state['storage']['override_messages']['redirect-conflict'] = t('The base source path %source is already being redirected. Do you want to <a href="@edit-page">edit the existing redirect</a>?', array('%source' => $redirect->source, '@edit-page' => url('admin/config/search/redirect/edit/'. $existing->rid)));
         $form_state['rebuild'] = TRUE;
diff --git a/redirect.install b/redirect.install
index d9e6843..d5f2c1d 100644
--- a/redirect.install
+++ b/redirect.install
@@ -88,6 +88,12 @@ function redirect_schema() {
         'default' => 0,
         'description' => 'The timestamp of when the redirect was last accessed.'
       ),
+      'language_neutral_source' => array(
+        'description' => 'Boolean indicating whether the redirect source should ignore the language.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('rid'),
     'unique keys' => array(
diff --git a/redirect.module b/redirect.module
index 6634b02..930824a 100644
--- a/redirect.module
+++ b/redirect.module
@@ -472,8 +472,12 @@ function redirect_load_by_source($source, $language = LANGUAGE_NONE, array $quer
     $source_condition->condition('source', db_like($source), 'LIKE');
     $source_condition->condition('source', '');
     $rid_query->condition($source_condition);
-  }
-  $rid_query->condition('language', array($language, LANGUAGE_NONE));
+  }  
+  $lang_condition = db_or();
+  $lang_condition->condition('language', array($language, LANGUAGE_NONE));
+  $lang_condition->condition('language_neutral_source', 1);
+  $rid_query->condition($lang_condition);
+  
   $rids = $rid_query->execute()->fetchCol();
 
   if ($rids && $redirects = redirect_load_multiple($rids)) {
@@ -624,6 +628,7 @@ function redirect_object_prepare($redirect, $defaults = array()) {
     'redirect_options' => array(),
     'language' => LANGUAGE_NONE,
     'status_code' => 0,
+    'language_neutral_source' => 0,
     'count' => 0,
     'access' => 0,
     'hash' => '',
@@ -906,7 +911,9 @@ function redirect_redirect($redirect = NULL) {
     $redirect->redirect_options += array('query' => array());
     $redirect->redirect_options['query'] += drupal_get_query_parameters();
   }
-
+  $languages = language_list();
+  $redirect->redirect_options['language'] = $languages[$redirect->language];
+    
   // Prevent the destination query parameter from overriding this redirect.
   //if (isset($_GET['destination'])) {
     // Simply unset the parameter since it has already been passed into
@@ -964,6 +971,7 @@ function redirect_hash($redirect) {
   $hash = array(
     'source' => $redirect->source,
     'language' => $redirect->language,
+    'language_neutral_source' => $redirect->language_neutral_source,
   );
   if (!empty($redirect->source_options['query'])) {
     $hash['source_query'] = $redirect->source_options['query'];
