diff --git a/apachesolr.admin.inc b/apachesolr.admin.inc
index 41293c9..51b3968 100644
--- a/apachesolr.admin.inc
+++ b/apachesolr.admin.inc
@@ -512,16 +512,31 @@ function apachesolr_status_page($environment = NULL) {
   return $output;
 }
 
-function apachesolr_index_report($env_id) {
+function apachesolr_index_report($environment = NULL) {
+  if (!$environment) {
+    $env_id = apachesolr_default_environment();
+    drupal_goto('admin/reports/apachesolr/' . $env_id);
+  }
+  $environments = apachesolr_load_all_environments();
+  $environments_list = array();
+  foreach ($environments as $env) {
+    $var_status = array('!name' =>$env['name']);
+    $environments_list[] = l(t('Statistics for !name', $var_status), 'admin/reports/apachesolr/' . $env['env_id']);
+  }
+  $output['environments_list'] = array(
+    '#theme' => 'item_list',
+    '#items' => $environments_list,
+  );
+
   try {
-    $solr = apachesolr_get_solr($env_id);
+    $solr = apachesolr_get_solr($environment['env_id']);
     $solr->clearCache();
     $data = $solr->getLuke();
   }
   catch (Exception $e) {
     watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
     drupal_set_message(nl2br(check_plain($e->getMessage())), "warning");
-    return '';
+    return $output;
   }
 
   $messages = array();
@@ -535,7 +550,7 @@ function apachesolr_index_report($env_id) {
   elseif (isset($data->index->numDocs)) {
     $not_found = t('Not indexed');
     try {
-      $solr = apachesolr_get_solr($env_id);
+      $solr = apachesolr_get_solr($environment['env_id']);
       // Note: we use 2 since 1 fails on Ubuntu Hardy.
       $data = $solr->getLuke(2);
       $messages[] = array(t('# of terms in index'), $data->index->numTerms);
@@ -594,10 +609,17 @@ function apachesolr_index_report($env_id) {
 /**
  * Page callback to show available conf files.
  */
-function apachesolr_config_files_overview() {
+function apachesolr_config_files_overview($environment = NULL) {
+  if (!$environment) {
+    $env_id = apachesolr_default_environment();
+  }
+  else {
+    $env_id = $environment['env_id'];
+  }
+
   $xml = NULL;
   try {
-    $solr = apachesolr_get_solr();
+    $solr = apachesolr_get_solr($env_id);
     $response = $solr->makeServletRequest('admin/file', array('wt' => 'xml'));
     $xml = simplexml_load_string($response->data);
   }
@@ -620,7 +642,7 @@ function apachesolr_config_files_overview() {
       // Get data from the files.
       $name =  $item->attributes();
       $name = ((string)$item->attributes()) ? (string)$item->attributes() : t('No name found');
-      $files[$item_id]['name'] = l($name, 'admin/reports/apachesolr/conf/' . $name);
+      $files[$item_id]['name'] = l($name, 'admin/reports/apachesolr/' . $env_id . '/conf/' . $name);
 
       // Retrieve the date attribute
       if (isset($item->date)) {
@@ -660,10 +682,17 @@ function apachesolr_config_files_overview() {
 /**
  * Page callback to show one conf file.
  */
-function apachesolr_config_file($name) {
+function apachesolr_config_file($name, $environment = NULL) {
+  if (!$environment) {
+    $env_id = apachesolr_default_environment();
+  }
+  else {
+    $env_id = $environment['env_id'];
+  }
+
   $output = '';
   try {
-    $solr = apachesolr_get_solr();
+    $solr = apachesolr_get_solr($env_id);
     $response = $solr->makeServletRequest('admin/file', array('file' => $name));
     $raw_file = $response->data;
     $output = '<pre>' . check_plain($raw_file) . '</pre>';
diff --git a/apachesolr.module b/apachesolr.module
index 2028275..57938e2 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -152,21 +152,29 @@ function apachesolr_menu() {
     'file'               => 'apachesolr.admin.inc',
     'type'               => MENU_CALLBACK,
   );
-  $env_id = apachesolr_default_environment();
-  $items['admin/reports/apachesolr'] = array(
+
+  $reports_path = 'admin/reports/apachesolr';
+  $items[$reports_path] = array(
+    'title'              => 'Apache Solr search index',
+    'description'        => 'Information about the contents of the index the server',
+    'page callback'      => 'apachesolr_index_report',
+    'access arguments'   => array('access site reports'),
+    'file'               => 'apachesolr.admin.inc',
+  );
+  $items[$reports_path . '/%apachesolr_environment'] = array(
     'title'              => 'Apache Solr search index',
     'description'        => 'Information about the contents of the index the server',
     'page callback'      => 'apachesolr_index_report',
-    'page arguments'     => array($env_id),
+    'page arguments'     => array(3),
     'access arguments'   => array('access site reports'),
     'file'               => 'apachesolr.admin.inc',
   );
-  $items['admin/reports/apachesolr/index'] = array(
+  $items[$reports_path . '/%apachesolr_environment/index'] = array(
     'title'              => 'Search index',
     'file'               => 'apachesolr.admin.inc',
     'type'               => MENU_DEFAULT_LOCAL_TASK,
   );
-  $items['admin/reports/apachesolr/conf'] = array(
+  $items[$reports_path . '/%apachesolr_environment/conf'] = array(
     'title'              => 'Configuration files',
     'page callback'      => 'apachesolr_config_files_overview',
     'access arguments'   => array('access site reports'),
@@ -174,10 +182,10 @@ function apachesolr_menu() {
     'weight'             => 5,
     'type'               => MENU_LOCAL_TASK,
   );
-  $items['admin/reports/apachesolr/conf/%'] = array(
+  $items[$reports_path . '/%apachesolr_environment/conf/%'] = array(
     'title'              => 'Configuration file',
     'page callback'      => 'apachesolr_config_file',
-    'page arguments'     => array(4),
+    'page arguments'     => array(5, 3),
     'access arguments'   => array('access site reports'),
     'file'               => 'apachesolr.admin.inc',
     'type'               => MENU_CALLBACK,
