diff --git a/doc/configuration.txt b/doc/configuration.txt
index 6c0faac05..1114f63e4 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -4838,7 +4838,7 @@ http-request strict-mode { on | off }
   rewrites optionnal while others must be performed to continue the request
   processing.
 
-  By default, the strict rewriting mode is disabled. Its value is also reset
+  By default, the strict rewriting mode is enabled. Its value is also reset
   when a ruleset evaluation ends. So, for instance, if you change the mode on
   the frontend, the default mode is restored when HAProxy starts the backend
   rules evaluation.
@@ -5241,7 +5241,7 @@ http-response strict-mode { on | off }
   rewrites optionnal while others must be performed to continue the response
   processing.
 
-  By default, the strict rewriting mode is disabled. Its value is also reset
+  By default, the strict rewriting mode is enabled. Its value is also reset
   when a ruleset evaluation ends. So, for instance, if you change the mode on
   the bacnkend, the default mode is restored when HAProxy starts the frontend
   rules evaluation.
diff --git a/src/http_ana.c b/src/http_ana.c
index fa418bb5d..538797fef 100644
--- a/src/http_ana.c
+++ b/src/http_ana.c
@@ -2943,8 +2943,8 @@ static enum rule_result http_req_get_intercept_rule(struct proxy *px, struct lis
 	}
 	s->current_rule_list = rules;
 
-	/* start the ruleset evaluation in soft mode */
-	txn->req.flags |= HTTP_MSGF_SOFT_RW;
+	/* start the ruleset evaluation in strict mode */
+	txn->req.flags &= ~HTTP_MSGF_SOFT_RW;
 
 	list_for_each_entry(rule, rules, list) {
 		/* check optional condition */
@@ -3312,9 +3312,9 @@ static enum rule_result http_req_get_intercept_rule(struct proxy *px, struct lis
 			rule_ret = HTTP_RULE_RES_ERROR;
 	}
 
-	/* if the ruleset evaluation is finished reset the soft mode */
+	/* if the ruleset evaluation is finished reset the strict mode */
 	if (rule_ret != HTTP_RULE_RES_YIELD)
-		txn->req.flags |= HTTP_MSGF_SOFT_RW;
+		txn->req.flags &= ~HTTP_MSGF_SOFT_RW;
 
 	/* we reached the end of the rules, nothing to report */
 	return rule_ret;
@@ -3356,8 +3356,8 @@ static enum rule_result http_res_get_intercept_rule(struct proxy *px, struct lis
 	}
 	s->current_rule_list = rules;
 
-	/* start the ruleset evaluation in soft mode */
-	txn->rsp.flags |= HTTP_MSGF_SOFT_RW;
+	/* start the ruleset evaluation in strict mode */
+	txn->rsp.flags &= ~HTTP_MSGF_SOFT_RW;
 
 	list_for_each_entry(rule, rules, list) {
 		/* check optional condition */
@@ -3681,9 +3681,9 @@ resume_execution:
 	}
 
   end:
-	/* if the ruleset evaluation is finished reset the soft mode */
+	/* if the ruleset evaluation is finished reset the strict mode */
 	if (rule_ret != HTTP_RULE_RES_YIELD)
-		txn->rsp.flags |= HTTP_MSGF_SOFT_RW;
+		txn->rsp.flags &= ~HTTP_MSGF_SOFT_RW;
 
 	/* we reached the end of the rules, nothing to report */
 	return rule_ret;
@@ -5568,13 +5568,13 @@ struct http_txn *http_alloc_txn(struct stream *s)
 
 void http_txn_reset_req(struct http_txn *txn)
 {
-	txn->req.flags = HTTP_MSGF_SOFT_RW;
+	txn->req.flags = 0;
 	txn->req.msg_state = HTTP_MSG_RQBEFORE; /* at the very beginning of the request */
 }
 
 void http_txn_reset_res(struct http_txn *txn)
 {
-	txn->rsp.flags = HTTP_MSGF_SOFT_RW;
+	txn->rsp.flags = 0;
 	txn->rsp.msg_state = HTTP_MSG_RPBEFORE; /* at the very beginning of the response */
 }