redirects – Multiple pages under single directory redirection to a single page

You are close, but there are errors:

RewriteRule ^ /. * $ ....

In .htaccess, the URL path corresponding to the RewriteRule model do not start with a slash, so this should be just ^. * $ (or even just . * – since regex is greedy by default), not ^ /. * $. By including the prefix slash, it will never match, so the directive does nothing. (You would need the slash prefix in a server or virtualhost the context.)

RewriteCond% {REQUEST_URI} ^ / page / product / New-Design / * [NC,OR]

the CondPattern (2nd argument to the RewriteCond directive) is a regex. The escape * it looks like you're treating as a joker expression. the * at the end, the preceding character is at least 0 times the preceding character. In this case, it corresponds to a slash equal to or more than 0 times. This does not correspond to the URLs you want to redirect. You should either use . * (to match 0 or more of any character: the point), or omit it completely, since it's enough to match the URLs starting with this path.

RewriteCond% {REQUEST_URI} ^ / page / product / New-Design / * [NC,OR]
RewriteCond% {REQUEST_URI} ^ / page / product / nature-of-purchase-design / * [NC,OR]
RewriteRule ^ /. * $ Https://www.testexamplesite.com/subjects/book/business-studies/ [R=302,L]

You should never include the OR flag on the last condition. That's basically saying OR true and the rule will run without condition (that is, if the RewriteRule model paired).

    RewriteCond% {REQUEST_URI} ^ / engine.jsp * [NC]
 RewriteRule ^ /. * $ Https://www.testexamplesite.com/subjects/book/business-studies/ [R=302,L]

the REQUEST_URI server variable does not contain the query string, so if you want to match all query string then you have nothing to do in this regard, you just need to match the required URL path. (To specifically match the query string, you need a condition that checks the REQUEST CHAIN server variable.)

In addition, wherever possible, it is more efficient to perform the necessary URL path checks in RewriteRule modelrather than using a RewriteCond (condition) directive. So, the above could be rewritten into one directive:

    RewriteRule ^ engine  .jsp $ https://www.testexamplesite.com/subjects/book/business-studies/ [R=302,L]

Do not forget to escape the literal points in the regex. In your question, you indicated that this should be redirected to https://www.testexamplesite.com, do not https://www.testexamplesite.com/subjects/book/business-studies/, as you said here?


In summary

So, by bringing this together, try the following instead. Note that these guidelines must go before the WordPress front controller, at the top of the .htaccess file.

RewriteRule ^ page / product / (new-design | nature-of-purchase-design) / https://www.testexamplesite.com/subjects/book/business-studies/ [NC,R=302,L]

RewriteRule ^ engine  .jsp $ https://www.testexamplesite.com/ [NC,R=302,L]

RewriteRule ^ page / product / (old model | nature-of-old-design-purchase) / https://www.testexamplesite.com/subjects/book/business-oldstudies/ [R=302,L]

Note that I removed the end-of-line anchor ($) of RewriteRule model. And changed the model in lower case, since you have the North Carolina (In no case) flag anyway.

UPDATE: To redirect only when a query string is present on the /engine.jsp The URL, you will need to add a condition to the middle rule that checks the REQUEST CHAIN server variable. For example:

RewriteCond% {QUERY_STRING}.
RewriteRule ^ engine  .jsp $ https://www.testexamplesite.com/ [NC,QSD,R=302,L]

The regex (one point) in the CondPattern ensures that the query string is present on the request.

UPDATE # 2: The QSD (Apache 2.4+) flag is required to ignore the query string of the redirected response.