diff --git a/http/routing/baserule.hpp b/http/routing/baserule.hpp
index f6ba8d2..14bbd47 100644
--- a/http/routing/baserule.hpp
+++ b/http/routing/baserule.hpp
@@ -80,9 +80,13 @@
 
     size_t methodsBitfield{1 << static_cast<size_t>(HttpVerb::Get)};
     static_assert(std::numeric_limits<decltype(methodsBitfield)>::digits >
-                      methodNotAllowedIndex,
+                      static_cast<int>(HttpVerb::Max),
                   "Not enough bits to store bitfield");
 
+    bool isNotFound = false;
+    bool isMethodNotAllowed = false;
+    bool isUpgrade = false;
+
     std::vector<redfish::Privileges> privilegesSet;
 
     std::string rule;
diff --git a/http/routing/ruleparametertraits.hpp b/http/routing/ruleparametertraits.hpp
index bb3f563..949f390 100644
--- a/http/routing/ruleparametertraits.hpp
+++ b/http/routing/ruleparametertraits.hpp
@@ -58,14 +58,16 @@
     self_t& notFound()
     {
         self_t* self = static_cast<self_t*>(this);
-        self->methodsBitfield = 1U << notFoundIndex;
+        self->isNotFound = true;
+        self->methodsBitfield = 0;
         return *self;
     }
 
     self_t& methodNotAllowed()
     {
         self_t* self = static_cast<self_t*>(this);
-        self->methodsBitfield = 1U << methodNotAllowedIndex;
+        self->isMethodNotAllowed = true;
+        self->methodsBitfield = 0;
         return *self;
     }
 
diff --git a/http/routing/sserule.hpp b/http/routing/sserule.hpp
index 5b55658..7f8e284 100644
--- a/http/routing/sserule.hpp
+++ b/http/routing/sserule.hpp
@@ -19,7 +19,12 @@
     using self_t = SseSocketRule;
 
   public:
-    explicit SseSocketRule(const std::string& ruleIn) : BaseRule(ruleIn) {}
+    explicit SseSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
+    {
+        isUpgrade = true;
+        // Clear GET handler
+        methodsBitfield = 0;
+    }
 
     void validate() override {}
 
@@ -27,7 +32,10 @@
                 const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                 const std::vector<std::string>& /*params*/) override
     {
-        asyncResp->res.result(boost::beast::http::status::not_found);
+        BMCWEB_LOG_ERROR(
+            "Handle called on websocket rule.  This should never happen");
+        asyncResp->res.result(
+            boost::beast::http::status::internal_server_error);
     }
 
     void handleUpgrade(const Request& /*req*/,
diff --git a/http/routing/websocketrule.hpp b/http/routing/websocketrule.hpp
index 0905b08..e62943f 100644
--- a/http/routing/websocketrule.hpp
+++ b/http/routing/websocketrule.hpp
@@ -16,7 +16,12 @@
     using self_t = WebSocketRule;
 
   public:
-    explicit WebSocketRule(const std::string& ruleIn) : BaseRule(ruleIn) {}
+    explicit WebSocketRule(const std::string& ruleIn) : BaseRule(ruleIn)
+    {
+        isUpgrade = true;
+        // Clear GET handler
+        methodsBitfield = 0;
+    }
 
     void validate() override {}
 
@@ -24,7 +29,10 @@
                 const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                 const std::vector<std::string>& /*params*/) override
     {
-        asyncResp->res.result(boost::beast::http::status::not_found);
+        BMCWEB_LOG_ERROR(
+            "Handle called on websocket rule.  This should never happen");
+        asyncResp->res.result(
+            boost::beast::http::status::internal_server_error);
     }
 
     void handleUpgrade(const Request& req,
