I want to keep my blog in subfolder domain_com/htdocs/blog and access it using blog.domain.com. I can obtain it using apache's mod_rewrite:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^blog\.domain\.com
RewriteCond %{HTTP_HOST} !^/blog
RewriteRule ^(.*)$ /blog/$1 [L]

But I also want to redirect hxxp://domain.com/blog to hxxp://blog.domain.com (simply because I want to hide it from users). Simple redirection like:

RewriteCond %{HTTP_HOST} ^wojtyniak\.com$
RewriteRule %{REQUEST_URI} ^/foo
RewriteRule ^(.*)$      http://foo.wojtyniak.com  [L,R=301]

causes redirection loop. Is there any way to make such a redirection without loop? Big thanks!

PS. Sorry for those hxxp thing, but serverfault thinks these are link and doesn't allow me to post more than one.

link|improve this question
feedback

2 Answers

up vote 1 down vote accepted

The most ideal solution would be to put this on a virtual-host, with the blog files hosted somewhere outside of your htdocs directory.

I'm going to assume that you won't have access to make these necessary changes, but in case you do, here's the documentation for it.

link|improve this answer
Unfortunately I can't create new vhost:( – radious Dec 18 '09 at 17:25
feedback

Yes, I know. Noone will need this anymore here, after 2 years. But maybe someone who is redirected here by Google.

# Rewrite <subdomain>.example.com/<path> to example.com/<subdomain>/<path>
#
# Skip rewrite if no hostname or if subdomain is www
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
# Extract (required) subdomain (%1), and first path element (%3), discard port number if present (%2)
RewriteCond %{HTTP_HOST}<>%{REQUEST_URI} ^([^.]+)\.example\.com(:80)?<>/([^/]*) [NC]
# Rewrite only when subdomain not equal to first path element (prevents mod_rewrite recursion)
RewriteCond %1<>%3 !^(.*)<>\1$ [NC]
# Rewrite to /subdomain/path
RewriteRule ^(.*) /%1/$1 [L]
#

I found that here http://www.webmasterworld.com/forum92/1310.htm

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.