Here are 2 ways to do it.
Method #1: Using a "meta" tag
You could just stick a index.html
file at the top of www.example.com that redirects to www.example.com/blog. This index.html
file would make use of the "meta" tags that are available in the <head>
tag:
For example
<html>
<head>
<meta http-equiv="refresh" content="0;url=http://www.example.com/blog/">
<title>www.example.com blog</title>
</head>
<body>
....
</body>
</html>
You can read more about them here.
NOTE: This method requires that you only want www.example.com/index.html to redirect to www.example.com/blog/.
Method #2: Using an Apache rewrite
#-- blog.example.com --#
<VirtualHost *:80>
UseCanonicalName Off
RewriteEngine On
ServerName blog.example.com
# blog
RewriteRule ^/(.*)$ http://www.example.com/blog/$1 [L,R=301]
</VirtualHost>
Method #3: Using an Apache Reverse Proxy
If you're attempting to take traffic in on say URL http://www.example.com/blog/ but your actual blog is at http://mysuperblog.blogger.com/, then another option would be to reverse proxy the mysuperblog.blogger.com behind an Apache instance tasked with sitting out in front.
#-- www.example.com/blog --#
<VirtualHost *:80>
UseCanonicalName Off
RewriteEngine On
ServerName www.example.com
# /blog -> /blog/
RewriteRule ^/blog$ /blog/ [R]
# blog
ProxyPass /blog http://mysuperblog.blogger.com
ProxyPassReverse /blog http://mysuperblog.blogger.com
</VirtualHost>
NOTE: In order to make use of Apache's reverse proxy functionality make sure that you enable the mod_proxy module.