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.com>wrote: > >> 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. >> >> >