> I want them to redirect to `www.example.com/blog`, but when I open my site it should not redirect me to blog

You want it to "redirect" without redirecting! What you really mean is you want to _internally rewrite_ to `/blog` but without _externally redirecting_.

You can do this with something like the following in .htaccess:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/blog/
    RewriteRule (.*) /blog/$1 [L]

This basically says... if the requested URI does not start with `/blog/` then rewrite to include `/blog/` at the start. Note the absence of the `R` flag on the `RewriteRule` directive. The `R` flag would result in an _external redirect_.

The `$1` in the `RewriteRule` substitution is a backreference to the parenthesised pattern `(.*)` in the `RewriteRule` pattern.

Note also that I've removed the `?` at the end of the `RewriteRule` substitution. This specifically removes any query string from the request. Unless that is required, it should be omitted.

No need to test against `%{HTTP_HOST}` or specify IP addresses.