Index: Solr_Base_Query.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/Solr_Base_Query.php,v
retrieving revision 1.1.4.14
diff -u -p -r1.1.4.14 Solr_Base_Query.php
--- Solr_Base_Query.php	9 Dec 2008 01:01:29 -0000	1.1.4.14
+++ Solr_Base_Query.php	11 Dec 2008 21:59:28 -0000
@@ -220,8 +220,7 @@ class Solr_Base_Query {
 
     $progressive_crumb = array();
     $search_keys = $this->get_query_basic();
-    // TODO: Don't know if hardcoding this is going to come back to bite.
-    $base = 'search/'. arg(1) . '/' . $search_keys;
+    $base = apachesolr_search_path($search_keys) . '/' . $search_keys;
     if ($search_keys) {
       $breadcrumb[] = l($search_keys, $base);
     }
Index: apachesolr.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/apachesolr.module,v
retrieving revision 1.1.2.12.2.72
diff -u -p -r1.1.2.12.2.72 apachesolr.module
--- apachesolr.module	11 Dec 2008 16:15:06 -0000	1.1.2.12.2.72
+++ apachesolr.module	11 Dec 2008 21:59:29 -0000
@@ -683,7 +683,7 @@ function apachesolr_block($op = 'list', 
             }
 
             $sort_links = array();
-            $path = 'search/' . arg(1) . '/' . $query->get_query_basic();
+            $path = apachesolr_search_path($query->get_basic_keys()) . '/' . $query->get_basic_keys();
             $new_query = clone $query;
             foreach ($sorts as $type => $sort) {
               $new_sort = isset($solrsorts[$type]) ? $solrsorts[$type] == 'asc' ? 'desc' : 'asc' : $sort['default'];
@@ -737,14 +737,14 @@ function apachesolr_facet_block($respons
       if ($active = $query->has_field($delta, $facet)) {
         $contains_active = TRUE;
         $new_query->remove_field($delta, $facet);
-        // TODO: don't assume 'search' - find the real path.
-        $path = 'search/'. arg(1) .'/'. $new_query->get_query_basic();
+        
+        $path = apachesolr_search_path($query->get_query_basic()) .'/'. $new_query->get_query_basic();
         $querystring = $new_query->get_url_querystring();
         $unclick_link = theme('apachesolr_unclick_link', $path, $querystring);
       }
       else {
         $new_query->add_field($delta, $facet);
-        $path = 'search/'. arg(1) .'/'. $new_query->get_query_basic();
+        $path = apachesolr_search_path($query->get_query_basic()) .'/'. $new_query->get_query_basic();
         $querystring = $new_query->get_url_querystring();
       }
       $countsort = $count == 0 ? '' : 1 / $count;
@@ -1022,6 +1022,14 @@ function apachesolr_cck_fields() {
 }
 
 /**
+ * Fetch the current search path. It is $_GET['q'] without the search keys
+ */
+function apachesolr_search_path($search_keys) {
+  // -1 to remove the trailing /
+  return substr($_GET['q'], 0, strpos($_GET['q'], $search_keys) - 1);
+}
+
+/**
  * Implementation of hook_theme().
  */
 function apachesolr_theme() {
Index: apachesolr_search.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/apachesolr_search.module,v
retrieving revision 1.1.2.6.2.45
diff -u -p -r1.1.2.6.2.45 apachesolr_search.module
--- apachesolr_search.module	11 Dec 2008 20:57:47 -0000	1.1.2.6.2.45
+++ apachesolr_search.module	11 Dec 2008 21:59:29 -0000
@@ -288,7 +288,7 @@ function apachesolr_search_block($op = '
       return $blocks;
 
     case 'view':
-      if (arg(1) == 'apachesolr_search' && apachesolr_has_searched()) {
+      if (apachesolr_has_searched()) {
         // Get the query and response. Without these no blocks make sense.
         $response = apachesolr_static_response_cache();
         if (empty($response)) {
@@ -314,13 +314,13 @@ function apachesolr_search_block($op = '
               if ($active = $query->has_field('tid', $tid)) {
                 $contains_active = TRUE;
                 $new_query->remove_field('tid', $term->tid);
-                $path = 'search/' . arg(1) . '/' . $new_query->get_query_basic();
+                $path = apachesolr_search_path($query->get_query_basic()) . '/' . $new_query->get_query_basic();
                 $querystring = $new_query->get_url_querystring();
                 $unclick_link = theme('apachesolr_unclick_link', $path, $querystring);
               }
               else {
                 $new_query->add_field('tid', $term->tid);
-                $path = 'search/' . arg(1) . '/' . $new_query->get_query_basic();
+                $path = apachesolr_search_path($query->get_query_basic()) . '/' . $new_query->get_query_basic();
                 $querystring = $new_query->get_url_querystring();
               }
               $countsort = $count == 0 ? '' : 1 / $count;
@@ -351,7 +351,7 @@ function apachesolr_search_block($op = '
           case 'currentsearch':
             $fields = $query->get_fields();
             $search_keys = $query->get_query_basic();
-            $path = 'search/' . arg(1) . '/' . $search_keys;
+            $path = apachesolr_search_path($search_keys) . '/' . $search_keys;
             $options = array();
             if (!$fields) {
               $options['attributes']['class'] = 'active';
@@ -361,7 +361,7 @@ function apachesolr_search_block($op = '
               if ($field['#name']) {
                 $new_query = clone $query;
                 $new_query->remove_field($field['#name'], $field['#value']);
-                $path = 'search/'. arg(1) .'/'. $new_query->get_query_basic();
+                $path = apachesolr_search_path($query->get_query_basic()) .'/'. $new_query->get_query_basic();
                 $querystring = $new_query->get_url_querystring();
                 $unclick_link = theme('apachesolr_unclick_link', $path, $querystring);
                 if (! $fielddisplay = theme("apachesolr_breadcrumb_". $field['#name'], $field['#value'])) {
@@ -392,13 +392,13 @@ function apachesolr_search_block($op = '
                     if ($active = $query->has_field($index_key, $facet)) {
                       $contains_active = TRUE;
                       $new_query->remove_field($index_key, $facet);
-                      $path = 'search/'. arg(1) .'/'. $new_query->get_query_basic();
+                      $path = apachesolr_search_path($query->get_query_basic()) .'/'. $new_query->get_query_basic();
                       $querystring = $new_query->get_url_querystring();
                       $unclick_link = theme('apachesolr_unclick_link', $path, $querystring);
                     }
                     else {
                       $new_query->add_field($index_key, $facet);
-                      $path = 'search/'. arg(1) .'/'. $new_query->get_query_basic();
+                      $path = apachesolr_search_path($query->get_query_basic()) .'/'. $new_query->get_query_basic();
                       $querystring = $new_query->get_url_querystring();
                     }
                     $countsort = $count == 0 ? '' : 1 / $count;
@@ -449,7 +449,6 @@ function apachesolr_search_get_username(
     return db_result(db_query("SELECT name FROM {users} WHERE uid = %d", $facet));
   }
 }
-
 /**
  * Implementation of hook_theme().
  */
Index: contrib/apachesolr_lang/apachesolr_lang.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/contrib/apachesolr_lang/Attic/apachesolr_lang.module,v
retrieving revision 1.1.2.1
diff -u -p -r1.1.2.1 apachesolr_lang.module
--- contrib/apachesolr_lang/apachesolr_lang.module	4 Nov 2008 14:37:49 -0000	1.1.2.1
+++ contrib/apachesolr_lang/apachesolr_lang.module	11 Dec 2008 21:59:30 -0000
@@ -33,12 +33,12 @@ function apachesolr_lang_block($op = 'li
                 if ($active = $query->has_field('language', $language)) {
                   $contains_active = TRUE;
                   $new_query->remove_field('language', $language);
-                  $path = 'search/'. arg(1). '/'. $new_query->get_query();
+                  $path = apachesolr_search_path($query->get_query_basic()). '/'. $new_query->get_query_basic();
                   $unclick_link = theme('apachesolr_unclick_link', $path);
                 }
                 else {
                   $new_query->add_field('language', $language);
-                  $path = 'search/'. arg(1). '/'. $new_query->get_query();
+                  $path = apachesolr_search_path($query->get_query_basic()). '/'. $new_query->get_query_basic();
                 }
                 $countsort = $count == 0 ? '' : 1 / $count;
                 // if numdocs == 1 and !active, don't add.
Index: contrib/apachesolr_multisitesearch/apachesolr_multisitesearch.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/contrib/apachesolr_multisitesearch/Attic/apachesolr_multisitesearch.module,v
retrieving revision 1.1.4.2
diff -u -p -r1.1.4.2 apachesolr_multisitesearch.module
--- contrib/apachesolr_multisitesearch/apachesolr_multisitesearch.module	4 Nov 2008 14:37:49 -0000	1.1.4.2
+++ contrib/apachesolr_multisitesearch/apachesolr_multisitesearch.module	11 Dec 2008 21:59:30 -0000
@@ -225,12 +225,12 @@ function apachesolr_multisitesearch_bloc
                 if ($active = $query->has_field('hash', $hash)) {
                   $contains_active = TRUE;
                   $new_query->remove_field('hash', $hash);
-                  $path = 'search/'. arg(1) . '/' . $new_query->get_query();
+                  $path = apachesolr_search_path($query->get_query_basic()) . '/' . $new_query->get_query_basic();
                   $unclick_link = theme('apachesolr_unclick_link', $path);
                 }
                 else {
                   $new_query->add_field('hash', $hash);
-                  $path = 'search/'. arg(1) . '/' . $new_query->get_query();
+                  $path = apachesolr_search_path($query->get_query_basic()) . '/' . $new_query->get_query_basic();
                 }
                 $countsort = $count == 0 ? '' : 1 / $count;
                 // if numdocs == 1 and !active, don't add.
