Skip to main content
3 of 4
Bit more explanation regarding $1 and backreference
MrWhite
  • 43.1k
  • 4
  • 50
  • 90

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.

MrWhite
  • 43.1k
  • 4
  • 50
  • 90