Thanks, for the info. Unfortunately the suggested rule does not seem to
work as expected.
Let me further explain what I'm trying to achieve:
All *.mydomain.com subdomains point to the same /mydomain/ local path as
DocumentRoot (can't change this behavior due to shared hosting
restrictions) and I'd like to have
a.mydomain.com - /mydomain/a (http://a.mydomain.com still shown in address
bar)
a.mydomain.com/dir1/ - /mydomain/dir1 (http://a.mydomain.com/dir1/ still
shown in address bar)
b.mydomain.com - /mydomain/b (http://b.mydomain.com still shown in address
bar)
b.mydomain.com/dir2/ - /mydomain/dir2 (http://a.mydomain.com/dir2/ still
shown in address bar)
My rule seems to work this way, with the notably exception of links to
subdirs not containing trailing slash
Thanks in advance.
On Sat, Mar 17, 2012 at 4:03 AM, Igor Cicimov icici...@gmail.com wrote:
RewriteCond %{HTTP_HOST} ^foo\.mydomain\.com$ http://foo.mydomain.com/
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^/(.*) /foo/$1 [L]
sorry missed the ^ above.
On Sat, Mar 17, 2012 at 1:49 PM, Igor Cicimov icici...@gmail.com wrote:
First SERVER_NAME is apache internal NOT a http header sent with the
request thus will match ANY request. Use HTTP_HOST instead. You also need
to escape the dots in the host name.
Second, from the documentation:
To combine new and old query strings, use the [QSA] flag.
so by using QSA you are modifying the query string adding another foo to
it thus the result you are seeing.
Finally, your rules should look like:
RewriteCond %{HTTP_HOST} ^foo\.mydomain\.com$ http://foo.mydomain.com/
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule /(.*) /foo/$1 [L]
Igor
On Sat, Mar 17, 2012 at 1:40 AM, Nala Gnirut nala.gni...@gmail.comwrote:
Hi all,
in a shared hosting with no access to httpd.conf, I'm trying to redirect
subdomains to different document root using mod_rewrite.
I'm using this rule in a .htaccess file placed in DocumentRoot:
# Change document root for foo.mydomain.com
RewriteCond %{SERVER_NAME} foo.mydomain.com
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule .* /foo%{REQUEST_URI} [QSA,L]
This works as expected accessing
foo.mydomain.com
foo.mydomain.com/
foo.mydomain.com/bar/
while
foo.mydomain.com/bar
fails as it's redirected to
/foo/foo/bar instead of /foo/bar
Please note that trailing slashes are automatically added to any rule
but the ones rewritten by this rule.
Where's my fault?
Thanks in advance.