RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.com$ RewriteRule ^/(.*) /%2/%1 [P,L] On Mar 18, 2012 12:58 AM, "Nala Gnirut" <nala.gni...@gmail.com> wrote:
> 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.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. >>>> >>>> >>> >> >