如何在servlet和tomcat中在运行时添加子域?

时间:2014-04-14 00:11:49

标签: tomcat servlets runtime subdomain

我有www.mydomain.com。如何在运行时添加subdomain1.mydomain.com,它应该引用另一个已部署的Web应用程序?

2 个答案:

答案 0 :(得分:0)

如果你有自己的服务器你应该去命名或绑定并在区域文件中添加:

* IN CNAME mydomain.com.
www.* IN CNAME mydomain.com.

或仅使用ip

* IN A ip.ip.ip.ip

重新启动bind并等待宽带dns。 接下来,如果你去blabla.mydomain.com并将系统重定向到默认的vhost 这意味着您的通配符处于活动状态。

现在您需要在用户创建博客时使用脚本。如果您的域名是mydomain.com并重定向到服务器/var/www/application上的主目录 您可以在/var/www/services/中创建,现在应该创建:

用户创建新博客时您需要在

中创建相同的文件夹名称
/var/www/services/user1

并且在 /var/www/.htaccess add

RewriteCond %{HTTP_HOST} ^(www.)?user1.mydomain.com
RewriteCond %{REQUEST_URI} !services/user1/
RewriteRule ^(.*)$ services/user1/$1 [L]

当另一个usr用ame user2添加博客时 创建文件夹/var/www/services/user2 并添加到.htaccess

RewriteCond %{HTTP_HOST} ^(www.)?user2.mydomain.com
RewriteCond %{REQUEST_URI} !services/user2/
RewriteRule ^(.*)$ services/user2/$1 [L]

等等

你的.htaccess应该:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?user1.mydomain.com
RewriteCond %{REQUEST_URI} !services/user1/
RewriteRule ^(.*)$ services/user1/$1 [L]

RewriteCond %{HTTP_HOST} ^(www.)?user2.mydomain.com
RewriteCond %{REQUEST_URI} !services/user2/
RewriteRule ^(.*)$ services/user2/$1 [L]

答案 1 :(得分:-1)

<Host appbase="webapps/ROOT/subdomain1" autodeploy="true" name="subdomain1.mydomain.com" unpackwars="true" xmlnamespaceaware="false" xmlvalidation="false">
<Context docbase="/usr/local/software/tomcat7/webapps/ROOT/subdomain1" path="" reloadable="true"></Context>
<Context antijarlocking="false" antiresourcelocking="false" docbase="/usr/local/software/tomcat7/webapps/manager" path="/manager" privileged="true" reloadable="true"></Context>
</Host>

尝试修改$ {catalina.home} /conf/server.xml或tomcat_installation / conf / server.xml

中提供的server.xml文件

不要忘记重启服务器:)