diff --git a/pom.xml b/pom.xml
index 87bf8b6..b51fbb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
             <dependency>
                 <groupId>com.metamx</groupId>
                 <artifactId>http-client</artifactId>
-                <version>0.9.2</version>
+                <version>0.9.4</version>
             </dependency>
             <dependency>
                 <groupId>com.metamx</groupId>
diff --git a/server/src/main/java/io/druid/server/coordinator/rules/PeriodLoadRule.java b/server/src/main/java/io/druid/server/coordinator/rules/PeriodLoadRule.java
index e996fa9..3f650c8 100644
--- a/server/src/main/java/io/druid/server/coordinator/rules/PeriodLoadRule.java
+++ b/server/src/main/java/io/druid/server/coordinator/rules/PeriodLoadRule.java
@@ -94,6 +94,6 @@
   public boolean appliesTo(Interval interval, DateTime referenceTimestamp)
   {
     final Interval currInterval = new Interval(period, referenceTimestamp);
-    return currInterval.overlaps(interval);
+    return currInterval.contains(interval);
   }
 }
diff --git a/server/src/main/java/io/druid/server/router/CoordinatorRuleManager.java b/server/src/main/java/io/druid/server/router/CoordinatorRuleManager.java
index adf8e6f..bcd5ba9 100644
--- a/server/src/main/java/io/druid/server/router/CoordinatorRuleManager.java
+++ b/server/src/main/java/io/druid/server/router/CoordinatorRuleManager.java
@@ -30,8 +30,8 @@
 import com.metamx.common.lifecycle.LifecycleStop;
 import com.metamx.common.logger.Logger;
 import com.metamx.http.client.HttpClient;
-import com.metamx.http.client.response.StatusResponseHandler;
-import com.metamx.http.client.response.StatusResponseHolder;
+import com.metamx.http.client.response.FullResponseHandler;
+import com.metamx.http.client.response.FullResponseHolder;
 import io.druid.client.selector.Server;
 import io.druid.concurrent.Execs;
 import io.druid.curator.discovery.ServerDiscoverySelector;
@@ -39,6 +39,7 @@
 import io.druid.guice.annotations.Global;
 import io.druid.guice.annotations.Json;
 import io.druid.server.coordinator.rules.Rule;
+import org.jboss.netty.handler.codec.http.HttpResponseStatus;
 import org.joda.time.Duration;
 
 import java.net.URL;
@@ -60,7 +61,7 @@
   private final Supplier<TieredBrokerConfig> config;
   private final ServerDiscoverySelector selector;
 
-  private final StatusResponseHandler responseHandler;
+  private final FullResponseHandler responseHandler;
   private final AtomicReference<ConcurrentHashMap<String, List<Rule>>> rules;
 
   private volatile ScheduledExecutorService exec;
@@ -82,7 +83,7 @@
     this.config = config;
     this.selector = selector;
 
-    this.responseHandler = new StatusResponseHandler(Charsets.UTF_8);
+    this.responseHandler = new FullResponseHandler(Charsets.UTF_8);
     this.rules = new AtomicReference<>(
         new ConcurrentHashMap<String, List<Rule>>()
     );
@@ -137,6 +138,7 @@
     return started;
   }
 
+  @SuppressWarnings("unchecked")
   public void poll()
   {
     try {
@@ -145,11 +147,19 @@
         return;
       }
 
-      StatusResponseHolder response = httpClient.get(new URL(url))
-                                                .go(responseHandler)
-                                                .get();
+      FullResponseHolder response = httpClient.get(new URL(url))
+                                              .go(responseHandler)
+                                              .get();
 
-      ConcurrentHashMap<String, List<Rule>> newRules = new ConcurrentHashMap<String, List<Rule>>(
+      if (response.getStatus().equals(HttpResponseStatus.FOUND)) {
+        url = response.getResponse().getHeader("Location");
+        log.info("Redirecting rule request to [%s]", url);
+        response = httpClient.get(new URL(url))
+                             .go(responseHandler)
+                             .get();
+      }
+
+      ConcurrentHashMap<String, List<Rule>> newRules = new ConcurrentHashMap<>(
           (Map<String, List<Rule>>) jsonMapper.readValue(
               response.getContent(), new TypeReference<Map<String, List<Rule>>>()
           {
diff --git a/server/src/test/java/io/druid/server/coordinator/rules/PeriodLoadRuleTest.java b/server/src/test/java/io/druid/server/coordinator/rules/PeriodLoadRuleTest.java
index afd2551..63d3384 100644
--- a/server/src/test/java/io/druid/server/coordinator/rules/PeriodLoadRuleTest.java
+++ b/server/src/test/java/io/druid/server/coordinator/rules/PeriodLoadRuleTest.java
@@ -49,7 +49,7 @@
 
     Assert.assertTrue(rule.appliesTo(builder.interval(new Interval("2012-01-01/2012-12-31")).build(), now));
     Assert.assertTrue(rule.appliesTo(builder.interval(new Interval("1000-01-01/2012-12-31")).build(), now));
-    Assert.assertTrue(rule.appliesTo(builder.interval(new Interval("0500-01-01/2100-12-31")).build(), now));
+    Assert.assertFalse(rule.appliesTo(builder.interval(new Interval("0500-01-01/2100-12-31")).build(), now));
   }
 
   @Test
@@ -64,7 +64,7 @@
     );
 
     Assert.assertTrue(rule.appliesTo(builder.interval(new Interval(now.minusWeeks(1), now)).build(), now));
-    Assert.assertTrue(
+    Assert.assertFalse(
         rule.appliesTo(
             builder.interval(new Interval(now.minusDays(1), now.plusDays(1)))
                    .build(),
