HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (http://www.howtoforge.com/forums/index.php)
-   Tips/Tricks/Mods (http://www.howtoforge.com/forums/forumdisplay.php?f=19)
-   -   user names as subdomains - HOWTO (http://www.howtoforge.com/forums/showthread.php?t=12383)

radim_h 28th April 2007 12:32

user names as subdomains - HOWTO
 
I think this can interrest someone:

It used to drive me crazy have user names in format
http://www.domain.tld/users/webXX_user
wanted them as http://user.domain.tld (third level domain)

so here is how to do it

1. in Ispconfig go to Management->System Config->Settings->ISP manager
change User Prefix to [DOMAIN]_
then user dirs will lok like http://www.domain.tld/users/domain.tld_user

2. Create file /etc/httpd/user_rewrite.conf which includes

RewriteCond %{SERVER_NAME} !^www\.
RewriteCond %{SERVER_NAME} !^mail\. ( not neccessary see bellow)
RewriteCond %{SERVER_NAME} ^([^.]*)\.(.*\..*)$
RewriteRule ^/(.*)$ /var/www/www.%2/user/%2_%1/web/$1 [L]

You can create as many lines like "RewriteCond %{SERVER_NAME} !^www\." as you want
^www\. here means that www.domain.tld will not rewrite (will not be looking for directory http://www.domain.tld/users/domain.tld_www, but show www.domain.tld) In my case i'm using also rewrite to show webmail as mail.domain.tld for each domain so i also have
RewriteCond %{SERVER_NAME} !^mail\.

3. In ISP manager->sites click on your site, then go to "Co-domains" and add
yourIP * domain.tld

6 In ISPmanger->sites-> www.domain.tld ->Basic put "Include user_rewrite.conf" into Apache Directives (Optional):


If you have more domains and don't want to forget do this for each domain, change:
Management->Form Designer->Edit Form->isp - ISP Web:->edit->web_httpd_include->Edit and put Include user_rewrite.conf into Default: window

5. In DNS manager ->domain.tld-> records you must create
CNAME * domain.tld

6. probably not necessary, but you can restart apache "apachectl restart"

and you are done :)



=============
If you want to have mail.domain.tld for each domain showing your default webmail
must have in DNS for your site
CNAME mail yourwebmail.yourdomain.tld
and your /etc/httpd/user_rewrite.conf should look like this

RewriteEngine on
RewriteCond %{SERVER_NAME} ^mail.*.*$
RewriteRule .* /var/www/path_to_your_webmail_site/web$0 [L]
RewriteCond %{SERVER_NAME} !^www\.
RewriteCond %{SERVER_NAME} !^www2\.
RewriteCond %{SERVER_NAME} !^mysql2\.
RewriteCond %{SERVER_NAME} ^([^.]*)\.(.*\..*)$
RewriteRule ^/(.*)$ /var/www/www.%2/user/%2_%1/web/$1 [L]

It works for me, i have configured webmail outside ISPconfig apache, if you use some webmail inside ispconfig in /home/admispconfig/ispconfig/web/yourwebmail it may not work (haven't tried)






Just have 2 questions for Falco or some other developer here .)

1. is there more ellegant way how to include user_rewrite.conf for all domains?
It didnt work for me to include in httpd.conf for all domains at once, its working just when included for each Virtual Host separatelly

2. Can i change default DNS entry for domains without editing code?
In my case i like to have DNS for all domains by default like this:

A Record
empty (domain.tld is already included in zone file but not showed in DNS manager)

CNAME
Hostname Target
* mydomain.tld
mail mail.myhosting.tld

MX
Mailserver Hostname
mail.myhosting.tld
mailbackup.myhosting.tld

(by default it shows MX admin.myhosting.tld which is wrong for me i have admin on different ip adress then users webs)

radim_h 12th May 2007 20:47

better one
 
rewrite thru http:// in previous post makes not neccessary overhead, better one will be rewrite on filesystem:

RewriteRule ^/(.*)$ /var/www/www.%2/user/%2_%1/web/$1 [L]



it should be nice to have it in /etc/httpd/conf/vhosts/Vhosts_ispconfig.conf
together with
AliasMatch ^/~([^/]+)(/(.*))? /var/www/webXX/user/$1/web/$3
AliasMatch ^/users/([^/]+)(/(.*))? /var/www/webXX/user/$1/web/$3
(btw: what are this aliases for?)

Is it possible to put it somewhere in the code to create rewrite automatically for each VirtualHost?

falko 13th May 2007 19:53

Quote:

Originally Posted by radim_h
(btw: what are this aliases for?)

Take a look at chapter 2.2.9 on http://ispconfig.org/downloads/manua..._src.htm#4_2_2 .

Quote:

Originally Posted by radim_h
Is it possible to put it somewhere in the code to create rewrite automatically for each VirtualHost?

You can modify the function make_vhost() in /root/ispconfig/scripts/lib/config.lib.php.

radim_h 13th May 2007 20:00

default aliases
 
I was just wondering, why you guys use this aliases
to make link http://www.domain.tld/users/testuser/
when user directory is var/www/webXX/user/
then you can show it as
http://www.domain.tld/user/testuser/ without rewrite.. ?

falko 14th May 2007 18:18

Quote:

Originally Posted by radim_h
then you can show it as
http://www.domain.tld/user/testuser/ without rewrite.. ?

Yes, no rewrite is needed then.

radim_h 14th May 2007 19:43

.
 
So why it is in there? .o)

till 15th May 2007 11:53

Quote:

Originally Posted by radim_h
I was just wondering, why you guys use this aliases
to make link http://www.domain.tld/users/testuser/
when user directory is var/www/webXX/user/
then you can show it as
http://www.domain.tld/user/testuser/ without rewrite.. ?

I dont think that it will work without rewrite. The directory:

http://www.domain.tld/users/testuser/

is without rewrite:

/var/www/webXX/web/users/testuser/

and not:

/var/www/webXX/users/testuser/

The directory of the users is outside of the document root of the website.

falko 15th May 2007 15:12

Quote:

Originally Posted by radim_h
So why it is in there? .o)

To make personal web sites for the users available:
Quote:

Take a look at chapter 2.2.9 on http://ispconfig.org/downloads/manua..._src.htm#4_2_2 .

LeoXavior 16th May 2007 14:23

Hey Radim, thx for this idea.. I am very interested in getting this setup on my system...
I'm trying to follow you're directions but im unclear on the dns/cname directions..

This is what I have done so far:
1) Set users to be created thru [DOMAIN]_
2) Created file: /etc/apache2/user_rewrite.conf
3) Inserted into user_rewrite.conf:
Code:

RewriteEngine On
RewriteCond %{SERVER_NAME} !^www\.
RewriteCond %{SERVER_NAME} !^mail\.
RewriteCond %{SERVER_NAME} ^([^.]*)\.(.*\..*)$
RewriteRule ^/(.*)$ http://www.%2/users/%2_%1/$1 [P]

4) Added Include user_rewrite.conf into my sites default apache directives
5) Restarted apache2
6) Created user: serverhash.com_testuser
7) Added CNAME:
Code:

Hostname Target
testuser testuser.serverhash.com

Complete DNS setup is as follows:
Code:


  A Record
  IP-Adresse            Hostname
  72.148.231.196            www
 
  CNAME
  Hostname            Target
  testuser            testuser.serverhash.com
 
  MX
  Mailserver            Hostname
  www.serverhash.com           
  mail.serverhash.com            mail

Works:
http://www.serverhash.com/users/serv....com_testuser/
http://www.serverhash.com/~serverhash.com_testuser/

Does not work:
http://testuser.serverhash.com/

Can you see anything im doing wrong. any help is appreciated.

radim_h 16th May 2007 19:17

Oh, i forget (changed now my first howto a bit)
In ISP manager click on your site, then go to "Co-domains" and add
yourIP testuser serverhash.com

and your CNAME is wrong, it has to be
CNAME
Hostname Target
testuser serverhash.com



I preffer
add co-domain
MyIP * mydomain.tld

and have DNS record
CNAME
Hostname Target
* mydomain.tld

then you don't have to care about each user apache will process anything.yourdomain.com


All times are GMT +2. The time now is 16:05.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.