Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.htaccess rewrite subdomain to directory and keep subdomain in url

I need to rewrite a subdomain to a subdirectory using .htaccess but keep the subdomain in the url like this:

Visited url in browser: sub1.domain.com

Served url: sub.domain.com/sub1/

I tried the following

RewriteCond %{HTTP_HOST} ^subdomain.domain.com
RewriteRule ^(.*)$ http://subdomain.domain.com/subdomain/$1 [L,NC,QSA]

but this leads to an endless loop. I know that it would be easier to do this by php but is there any solution for this with using .htaccess?

like image 828
MDeuerlein Avatar asked Mar 14 '14 02:03

MDeuerlein


1 Answers

You can use this rule in document root:

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC]
RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC]

Explanation:

  • NC: Ignore case
  • L: Last rule
  • RewriteCond %{HTTP_HOST} line makes sure that rule only executes for subdomain
  • (?!sub1/) is negative lookahead expression that means of request is not starting with /sub1/
  • RewriteRule ^((?!sub1/).*)$ /sub1/$1 [L,NC] rewrites current path to /sub1/<uri>

References:

  • Apache mod_rewrite Introduction
  • Apache mod_rewrite Technical Details
like image 184
anubhava Avatar answered Sep 24 '22 01:09

anubhava