.htaccess redirect domain to subdirectory without changing URL

53,114

You can use this rule:

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]

This will prefix every request for domain2.com with /subdir if it is not already there.

Share:
53,114

Related videos on Youtube

Shark5060
Author by

Shark5060

Updated on February 16, 2022

Comments

  • Shark5060
    Shark5060 about 2 years

    I have the following setup: -> domain1.com is my main domain and also document root -> domain2.com is another domain which is registered as an alias domain (means it does exactly the same as domain1.com), I have multiple of those domains.

    when I now want to redirect that domain to something I usually use this to redirect the domain to something else (like an external website):

    RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
    RewriteRule ^(.*) http://somewiredisp.com/user/bla/$1 [L,R]
    

    this is usually used if I register a domain for someone who needs a nice url for their forums or whatever. Works like a charm - the only "problem" would be that the address bar in the browser changes, but I've read that there would be no way to do that with external URLs, and since no one ever complained about it I am fine with it.

    However, now I would like to link some url to a subdirectory WITHOUT the url changing in the address bar.

    domain2.com -> domain1.com/subdir (or domain2.com/subdir - that doesn't matter, since it's an alias domain).

    my current approach would be

    RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
    RewriteRule ^(.*) http://domain1.com/subdir/ [P]
    

    which doesn't work (Error 404) - if I call domain1.com/subdir/ directly if works obviously.

    I also tried several variations of

    RewriteRule ^(.*) http://domain2.com/subdir/ [P]
    RewriteRule ^(.*) /subdir/ [P]
    RewriteRule ^(.*) http://domain1.com/subdir/index.html [P]
    

    all with the same result.

    maybe it's just a simple mistake but I am currently clueless :/

  • anubhava
    anubhava over 9 years
    This should work irrespective of http or https. Make sure https URL is also going to same htaccess
  • Adrian Rodriguez
    Adrian Rodriguez over 7 years
    It works for me only if there is a slash. eg domain.com/demo/ but without slash domain.com/demo, I got domain.com/domain.com/demo/ Any idea?
  • anubhava
    anubhava over 7 years
    Comments are not good section for answering but you can keep a trailing slash fix rule before this rule.
  • user3035649
    user3035649 about 5 years
    What if it works/redirects perfectly EXCEPT you don't want the "subdir" text showing in the URL in the address bar? Any way to do that?
  • anubhava
    anubhava about 5 years
    This rule doesn't do any redirect so subdir won't show in browser after rewrite.