.htaccess directory to subdomain

6,514

I have found some fantastic code for the .htaccess that converts any folder in the main www directory into sub-domains e.g. www/somefolder turns into somefolder.domain.com you can also set it so that any directory inside a certain directory becomes a subdomain e.g. www/folder/somefolder turns into somefolder.domain.com

the code below is set to redirect directory's inside a specific directory

Options +FollowSymLinks -Multiviews
RewriteEngine on
RewriteBase /
#
# Canonicalize the hostname
RewriteCond www.%{HTTP_HOST} ^(www)\.(example\.com) [OR]
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.(example\.com) [OR]
RewriteCond %{HTTP_HOST} ^([^.]+)\.www\.(example\.com) [OR]
RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com). [OR]
RewriteCond %{HTTP_HOST} ^([^.]+)\.(example\.com):[0-9]+
RewriteRule (.*) http://%1.%2/$1 [R=301,L]
#
# If subdomain is NOT www
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
# Extract (required) subdomain to %1
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
# Rewrite if requested URL resolves to existing file or subdirectory in /subdomains/<subdomain>/ path
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/subdomains/%1/$1 -d
RewriteRule (.*) /subdomains/%1/$1 [L]

simply change 'example.com' to your domain e.g. 'domain.com' make sure you don't remove any of the other symbols apart from dots . currently the directory's in the folder called 'subdomains' will change into a subdomain e.g. www/subdomains/blog will turn into 'blog.domain.com' to set it to just change the folders in the www directory to subdomains e.g. www/blog will turn into 'blog.domain.com'

if you want to automatically forward to a subdomain e.g. blog.domain.com you will need to put this at the end of the other code

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://blog.example.com/$1 [R=301,L]

hope this works for everyone it took me ages to find a solution to this horrible problem thanks Reblerebel

Share:
6,514

Related videos on Youtube

reblerebel
Author by

reblerebel

Updated on September 18, 2022

Comments

  • reblerebel
    reblerebel over 1 year

    I have been trying to make a subdomain from a directory (made by .htaccess) to be used as the main page starting like http://domain.com/sub/2/3/4.html and turning into http://sub.domain.com/2/3/4.html.

    The folder system goes like:

    www\sub\2\3\
    

    in www there is a index.html and in the sub folder there is a different index.html.

    I currently have this code which I found on another site:

    Options -Indexes +FollowSymLinks
    
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^domain.com [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
    
    RedirectMatch 301 ^/sub/(.*)$ http://sub.domain.com/$1
    

    It is successful with changing the domain path to http://sub.domain.com/, but it is not successful in changing the page shown from the index in the www directory to the index in the sub directory.

    It is also not successful in allowing to open other pages, i.e. not allowing sub.domain.com/2/3/4.html. If anyone can give any advice it would be much appreciated.

  • Admin
    Admin over 12 years
    how would you do that?
  • Yun Huang
    Yun Huang over 12 years
  • Admin
    Admin over 12 years
    so do i put that in the .htaccess file because i am unable to edit any other preferences
  • Yun Huang
    Yun Huang over 12 years
    No, this is not a .htaccess configuration. You need to edit apache's apache2.conf or httpd.conf. You'll have to ask your admin to do it then.
  • Admin
    Admin over 12 years
    i am currently using free hosing which i can FTP into so would it go into the www directory?
  • Yun Huang
    Yun Huang over 12 years
    Then your option is to create another free hosting account for the subdomain and put your files there. This is way off-topic for stackoverflow.
  • Admin
    Admin over 12 years
    sorry but i am unable to create a subdomain that is the whole problem