diff --git a/plugins/facetapi/widget_links.inc b/plugins/facetapi/widget_links.inc
index 166d115..728ae18 100644
--- a/plugins/facetapi/widget_links.inc
+++ b/plugins/facetapi/widget_links.inc
@@ -119,10 +119,17 @@ class SearchApiRangesWidgetUISlider extends FacetapiWidget {
       $to_value = $max_value;
     }
 
+    // Get facet path field/alias
+    $range_field = $this->facet['field alias'];
+    if (module_exists('facetapi_pretty_paths')) {
+      $processor = new FacetapiUrlProcessorPrettyPaths($this->facet->getAdapter());
+      $range_field = $processor->getFacetPrettyPathsAlias($this->facet->getFacet());
+    }
+
     // Prepare the slider variables and return themed form
     // @see search-api-ranges-slider.tpl.php
     $variables = array(
-      'range_field' => rawurlencode($this->facet['field alias']),
+      'range_field' => rawurlencode($range_field),
       'name' => $this->settings->settings['name'],
       'prefix' => $this->settings->settings['prefix'],
       'suffix' => $this->settings->settings['suffix'],
diff --git a/search_api_ranges.module b/search_api_ranges.module
index b3ad8ff..47e3ebc 100644
--- a/search_api_ranges.module
+++ b/search_api_ranges.module
@@ -292,27 +292,53 @@ function search_api_ranges_block_view_form_submit($form, &$form_state) {
     'page'
   ));
 
-  // Prepare new range query (override existing key or add new)
-  $query = $range_field . ':' . '[' . $values['range-from'] . ' TO ' . $values['range-to'] . ']';
-  // @todo Facet API can have different '?f=' for query, how to detect?
-
-  $pos = -1;
-  if (isset($params['f'])) {
-    foreach ($params['f'] as $key => $param) {
-      if (strpos($param, $range_field . ':') !== FALSE) {
-        $pos = $key;
+  // Get pretty path path and goto()
+  $path = $_GET['q'];
+  if (module_exists('facetapi_pretty_paths')) {
+    $exists = FALSE;
+    $path = urldecode(ltrim(parse_url(request_uri(), PHP_URL_PATH), '/'));
+    $split_path = explode('/', $path);
+    foreach ($split_path as $key => $value) {
+      if (!($key % 2) && $value == $range_field) {
+        $exists = $split_path[$key + 1];
       }
     }
-  }
 
-  if ($pos != -1) {
-    $params['f'][$pos] = $query;
+    // Decision: replace existing range or add new
+    $new_range = '[' . $values['range-from'] . ' TO ' . $values['range-to'] . ']';
+    if ($exists) {
+      $path = str_replace($exists, $new_range, $path);
+    }
+    else {
+      $path .= '/' . $range_field . '/' . $new_range;
+    }
+
+    // Unset non-pretty query
+    unset($params['f']);
   }
+
+  // Non-pretty path logic
   else {
-    $params['f'][] = $query;
+    $query = $range_field . ':' . '[' . $values['range-from'] . ' TO ' . $values['range-to'] . ']';
+
+    $pos = -1;
+    if (isset($params['f'])) {
+      foreach ($params['f'] as $key => $param) {
+        if (strpos($param, $range_field . ':') !== FALSE) {
+          $pos = $key;
+        }
+      }
+    }
+
+    if ($pos != -1) {
+      $params['f'][$pos] = $query;
+    }
+    else {
+      $params['f'][] = $query;
+    }
   }
 
-  drupal_goto($_GET['q'], array('query' => array($params)));
+  drupal_goto($path, array('query' => array($params)));
 }
 
 /**
