![]() |
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) |
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? |
Quote:
Quote:
|
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.. ? |
Quote:
|
.
So why it is in there? .o)
|
Quote:
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. |
Quote:
Quote:
|
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 On5) Restarted apache2 6) Created user: serverhash.com_testuser 7) Added CNAME: Code:
Hostname TargetCode:
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. |
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 22:28. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2013, vBulletin Solutions, Inc.