diff --git a/apachesolr_search.module b/apachesolr_search.module
index 74aee8b..7727aa7 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -36,7 +36,9 @@ function apachesolr_search_init() {
         if ($adapter = facetapi_adapter_load($searcher)) {
           try {
             $solr = apachesolr_get_solr($env_id);
-            apachesolr_search_run_empty('apachesolr', $params, $adapter->getSearchPath(), $solr);
+            if ($facet_path = apachesolr_search_get_facet_path($env_id)) {
+              apachesolr_search_run_empty('apachesolr', $params, $facet_path, $solr);
+            }
           }
           catch (Exception $e) {
             watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
@@ -1457,35 +1459,106 @@ function apachesolr_search_build_spellcheck($form, &$form_state) {
 }
 
 /**
+ * Helper function that gets the facet path from the selected page ID.
+ *
+ * This is a wrapper around the apachesolr_environment_variable_get() function
+ * for the "apachesolr_search_facet_search_page" variable that provides some
+ * sanity checks on the setting.
+ *
+ * @param $env_id
+ *   The environment ID we are getting the setting from.
+ *
+ * @return
+ *   The search path, FALSE if not valid.
+ *
+ * @see apachesolr_environment_variable_get()
+ */
+function apachesolr_search_get_facet_path($env_id) {
+  $page_id = apachesolr_environment_variable_get($env_id, 'apachesolr_search_facet_search_page', '');
+  if ($page_id && ($page = apachesolr_search_page_load($page_id)) && $env_id == $page->env_id) {
+    return $page->search_path;
+  }
+  return FALSE;
+}
+
+
+/**
  * Implements hook_form_[form_id]_alter().
  *
  * Adds settings to show facet blocks on non-search pages.
  */
 function apachesolr_search_form_facetapi_realm_settings_form_alter(&$form, &$form_state) {
   if ('apachesolr' == $form['#facetapi']['adapter']->getId() && 'block' == $form['#facetapi']['realm']['name']) {
+    $form['apachesolr_variables'] = array('#tree' => TRUE);
+
     // Gets the environment ID from the searcher, stores in #facetapi property.
     $env_id = ltrim(strstr($form['#facetapi']['adapter']->getSearcher(), '@'), '@');
+    $form['#facetapi']['env_id'] = $env_id;
 
+    try {
+      // Gets search pages directly from the index.
+      $result = db_select('apachesolr_search_page', 's')
+        ->fields('s', array('page_id', 'label', 'search_path'))
+        ->condition('env_id', $env_id)
+        ->execute();
+    }
+    catch (Exception $e) {
+      watchdog_exception('apachesolr_search', $e);
+      $result = array();
+    }
+
+    // Iterates over search pages, builds menu items.
+    $search_pages = array();
+    foreach ($result as $record) {
+      $link = l($record->search_path, $record->search_path);
+      $search_pages[$record->page_id] = check_plain($record->label) . ' (' . $link . ')';
+    }
+
+    // Gets default values from environment variables.
     $show_facets = apachesolr_environment_variable_get($env_id, 'apachesolr_search_show_facets', 0);
     $facet_pages = apachesolr_environment_variable_get($env_id, 'apachesolr_search_facet_pages', '');
 
-    $form['#facetapi']['env_id'] = $env_id;
+    // The setting is valid if we have a path, otherwise we need a sane default.
+    // In this instance, a sane default is simply the first page in the list.
+    if (apachesolr_search_get_facet_path($env_id)) {
+      $facet_search_page = apachesolr_environment_variable_get($env_id, 'apachesolr_search_facet_search_page', '');
+    }
+    else {
+      $facet_search_page = key($search_pages);
+    }
 
-    $form['apachesolr_search_show_facets'] = array(
-      '#type' => 'checkbox',
+    $form['apachesolr_variables']['apachesolr_search_show_facets'] = array(
       '#title' => t('Show facets on non-search pages.'),
+      '#type' => 'checkbox',
+      '#access' => !empty($search_pages),
       '#default_value' => $show_facets,
     );
 
-    $form['apachesolr_search_facet_pages'] = array(
+    $form['apachesolr_variables']['apachesolr_search_facet_pages'] = array(
       '#title' => t('Non-search paths'),
       '#type' => 'textarea',
+      '#access' => !empty($search_pages),
       '#default_value' => $facet_pages,
       '#states' => array(
         'visible' => array(
-          'input[name="apachesolr_search_show_facets"]' => array('checked' => TRUE),
+          'input[name="apachesolr_variables[apachesolr_search_show_facets]"]' => array('checked' => TRUE),
         ),
       ),
+      '#description' => t("Specify pages that facets will be displayed on by using their paths. Enter one path per line. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '<front>')),
+    );
+
+    $form['apachesolr_variables']['apachesolr_search_facet_search_page'] = array(
+      '#title' => t('Search page'),
+      '#type' => 'radios',
+      '#access' => !empty($search_pages),
+      '#options' => $search_pages,
+      '#default_value' => $facet_search_page,
+      '#states' => array(
+        'visible' => array(
+          'input[name="apachesolr_variables[apachesolr_search_show_facets]"]' => array('checked' => TRUE),
+        ),
+      ),
+      '#description' => t('Select the search page the user is directed to when a facet item is activated.'),
     );
 
     $form['#submit'][] = 'apachesolr_search_facetapi_realm_settings_form_submit';
@@ -1497,12 +1570,9 @@ function apachesolr_search_form_facetapi_realm_settings_form_alter(&$form, &$for
  */
 function apachesolr_search_facetapi_realm_settings_form_submit(&$form, &$form_state) {
   $env_id = $form['#facetapi']['env_id'];
-
-  // Adds the settings to the array keyed by environment ID, saves variables.
-  $show_facets = $form_state['values']['apachesolr_search_show_facets'];
-  $facet_pages = $form_state['values']['apachesolr_search_facet_pages'];
-  apachesolr_environment_variable_set($env_id, 'apachesolr_search_show_facets', $show_facets);
-  apachesolr_environment_variable_set($env_id, 'apachesolr_search_facet_pages', $facet_pages);
+  foreach ($form_state['values']['apachesolr_variables'] as $variable => $value) {
+    apachesolr_environment_variable_set($env_id, $variable, $value);
+  }
 }
 
 /**
