http://strangebank.bokee.com/viewdiary.16292545.html
前两天为了让Sylvan的用户能够更方便的记忆自己的个人空间的地址,研究了一下Apache的URL Rewrite功能,实现了每个用户可以把自己的用户名作为二级域名的虚拟主机的设定。
其实,之前也用过URL Rewrite模块,只不过只是用来转换URL中传入的参数的。这次用它来做虚拟主机,其实原理是一样的。
先说一下目的。我想做到的是用户在浏览器中输入类似 http://wells .osall.com/test.php?a=1&b=2 这样的URL地址时,把蓝色部分的用户名作为一个参数并转到页面在服务器上的真正的实际地址 /path/to/file/test.php?un=wells &a=1&b=2 ,并且要让用户在浏览器中看到的URL地址不发生改变。
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.osall.net 和 *.osall.com全部解析到了我的这台Linux Server上。
然后,看一下我的Apache中关于*.osall.com的虚拟主机的设定。
-
#*.com,*.osall.net
-
<VirtualHost *:80 >
-
ServerAdmin webmaster@osall.com
-
DocumentRoot /home/www/www.osall.com
-
ServerName dns.osall.com
-
ServerAlias dns.osall.net osall.com osall.net *.osall.com *.osall.net
-
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/a_wosa_log.%Y%m%d 86400" common
-
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/e_wosa_log.%Y%m%d 86400"
-
<Directory /home/www/www.osall.com >
-
AllowOverride None
-
Order deny ,allow
-
#AddDefaultCharset GB2312
-
</Directory>
-
<IfModule mod_rewrite.c >
-
RewriteEngine on
-
RewriteCond %{HTTP_HOST} ^[^.]+\.osall\.(com|net)$
-
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
-
RewriteRule ^([^.]+)\.osall\.(com|net)(.*)$ /home/www/www.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L]
-
</IfModule>
- </VirtualHost>
在这段设定中,我把*.osall.net和*.osall.com 的Document Root都设定到了 /home/www/www.osall.com
但是,继续看下去,看到 <IfModule mod_rewrite.c >...</IfModule> 配置了吗?在这里我就配置了URL Rewrite规则。
RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.osall.(com|net)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.osall.com 或者 xxxx.osall.net 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).osall.(com|net)(.*)$ /home/www/dev.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L] # 最 关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给 /home/www /dev.osall.com目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明 的重写后的地址用的是服务器上的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着 的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。
这样设置后,重起Apache服务器,测试一下,就大功告成了!
_______________________________________________________________________________
http://wenku.baidu.com/view/7e3bfd94dd88d0d233d46ad4.html
_______________________________________________________________________________
weblogic配置二级域名:
1 有多个工程,比如说工程abc,工程def,如果直接部署到开发模式的domain里,有一个是主工程,另一个要以abc.com:7001/def访问,而且其他工程里要在weblogic.xml文件里加上<context-root>/def</context-root>你的应用名称,现在我们想abc.yourname.com,def.yourname.com这样访问。
2 首先将weblogic.xml文件里上面的语句改成<context-root>/</context-root>
host文件里对应成127.0.0.1
127.0.0.1 abc.yourname.com
127.0.0.1 def.yourname.com
3 现在开始配置
////创建虚拟主机路径
1) 首先:weblogic建一个domain是products mode模式的
2) 启动该域,进入到console,http://localhost:7001/console
3) 域名--》Environment--》Virtual Hosts -->lock & edit -->new
4) Name : abc,点进去 configuration-->Virtual Host Names:abc.yourname.com-->Targets -->选上 Admain Server
5) save ===> activate changes
其他类似,可以建多个,如,def.yourname.com
////部署工程
1)Deployments-->lock & edit
2) install--》 选择你的工程 ,选择对应的Virtual Host
3)直接在这里的控制台启动
就可以访问了http://abc.yourname.com:7001,http://def.yourname.com:7001
///配置文件信息
\bea\user_projects\domains\test_domain\config
<virtual-host>
<name>def</name>
<target>AdminServer</target>
<virtual-host-name>def.yourname.com</virtual-host-name>
</virtual-host>
<virtual-host>
<name>www</name><!--主工程-->
<target>AdminServer</target>
<virtual-host-name>www.yourname.com</virtual-host-name>
</virtual-host>
<app-deployment>
<name>abc</name>
<target>www</target>
<module-type>war</module-type>
<source-path>D:\workspace\abc\WebRoot</source-path>
<security-dd-model>DDOnly</security-dd-model>
</app-deployment>
<app-deployment>
<name>def</name>
<target>def</target>
<module-type>war</module-type>
<source-path>D:\workspace\def\WebRoot</source-path>
<security-dd-model>DDOnly</security-dd-model>
</app-deployment>
将默认端口改为80
<server>
<name>AdminServer</name>
<listen-port>80</listen-port>加上这句就可以了
<listen-address></listen-address>
</server>
其他设置:
D:\bea\user_projects\domains\test_domain\bin\stopWebLogic.cmd文件中
找到 SETLOCAL
在这行之下加上:
set userID=weblogic
set password=weblogic
每次停止weblogic的时候就不用输入用户名,密码
同理
D:\bea\user_projects\domains\test_domain\bin\startWebLogic.cmd文件中
找到 set SAVE_CLASSPATH=
在这行之下加上:
set WLS_USER=weblogic
set WLS_PW=weblogic
每次启动weblogic的时候就不用输入用户名,密码
二级域名一般情况下不需要,但在某些情况下,比如模拟网站群,比如作为一项附加功能给用户,让用户有独立家园的感觉……这些时候,可能有一定的商业价值。
要给“我记录网站综合系统”开启网站配置功能,请看下面的教程。
第一部分:效果预览
--------------------------------------
本来你的个人空间的网址是 www.wojilu.com/zhangsan.aspx ,现在是 zhangsan.wojilu.com
本来你的博客链接是 www.wojilu.com/space/lisi/Blog1/Post/3.aspx ,现在是 lisi.wojilu.com/Blog1/Post/3.aspx
……
依次类推。
第二部分:准备工作
------------------------------------------
第一步:配置IIS以支持泛域名映射
你需要打开IIS,检查其中的默认网站是否正确设置——
1)端口必须是80;
2)主机头必须是留空,如下图所示。
通过这一步,这就意味着IIS打开了泛域名映射,任何通过***.abc.com 这种非特定的域名或二级域名来访的时候,都会映射到此网站。
3)因为IIS只支持一个泛域名映射,所以请关闭IIS中其他所有网站。
非常可惜,本来你的IIS可以放多个网站的,现在你只能放一个。没有办法,IIS本身如此。
如果你的网站不使用域名,而是直接使用ip+端口访问,那倒是可以,不用关闭。
第二步:配置DNS,将所有二级域名指向你的ip地址
请访问域名服务商给你的域名DNS配置网址,在A记录中,
增加一条 *.abc.com 指向到你的ip(其中abc请换成你的域名)
第三部分:让wojilu支持二级域名
-------------------------------------------------
第一步,请登录你的网站,然后注销
如果没有注销,因为下面的步骤会更改cookie配置,从而导致你无法正常使用,无法注销也无法登录。
当然,如果已经是未登录状态,那自然最好。
第二步,请打开网站根目录的 web.config 文件,在forms这一块中增加你网站的域名
<forms name="wojiluASPXAUTH" />
增加为
<forms name="wojiluASPXAUTH" domain=".mytest.com"loginUrl="/Main/Login.aspx" />
另外,如果你的网站没有设置后缀名,那么 Main/Login.aspx 也相应去掉后缀名
这一步的作用是:让所有二级域名和主站共享cookie状态,避免无法正常登录的问题。
第三步,打开/framework/config/mvc.config 文件,增加两行配置
// 是否启用域名映射
isDomainMap : true
// 二级域名通配符对应的 owner类型
subdomainWildcardType : wojilu.Members.Users.Domain.User
其中的通配符映射的意思是——
如果 subdomainWildcardType 是用户类型(wojilu.Members.Users.Domain.User),那么
zhangsan.abc.com 这种二级域名都会映射到 ww w.abc.com/space/zhangsan.aspx
如果 subdomainWildcardType 是群组类型(wojilu.Members.Groups.Domain.Group),那么
zhangsan.abc.com 这种二级域名都会映射到 ww w.abc.com/group/zhangsan.aspx
目前“我记录网站综合系统”支持两种类型的“会员类型”(IMember),所以只能填写两个值之一,或者是wojilu.Members.Users.Domain.User ,或者是wojilu.Members.Groups.Domain.Group 。
当然,如果你将来扩展了IMember类型,则此处还可以填写其他数据。
第四步,重启网站,访问网站首页,即可看到二级域名效果。
【常见问题】
1)一定要关闭页面缓存,否则不经过路由解析。当然这个限制会尝试解决TODO。
2)为了让用户cookie失效,也可以修改web.config中cookie名称
3)为了二级域名方便使用,网址配置成必须有后缀名.aspx。换句话说,如果开启二级域名功能,需要网站建立之初就开启,如果在使用一段时间之后再开启,有些链接就成了死链。
4)在二级域名下无法请求主域名网址的js,因为js不能跨域,在开发过程中必须注意这方面的问题。
相关推荐
网站发布的配置是一个涉及多步骤和关键技术的流程,主要在Tomcat服务器、Windows Server 2003操作系统以及Java环境中进行。下面将详细讲解这个过程中的关键知识点。 首先,Tomcat是一个开源的Java Servlet容器,它...
4. 邻苯二甲酸-盐酸缓冲液:邻苯二甲酸氢钾(C6H4KO7·H2O)和盐酸(HCl)配制的缓冲液。该缓冲液广泛应用于生物化学和药学领域。 5. 柠檬酸-柠檬酸钠缓冲液:柠檬酸(C6H8O7·H2O)和柠檬酸钠(Na3C6H5O7·2H2O)...
在大型企业级项目中,通常会将应用划分为多个模块,以提高代码的复用性和管理效率。这就是“Struts多模块配置”所涉及的核心概念。 在Struts多模块配置中,每个模块代表一个独立的功能或者业务领域,它们之间通过...
【84消毒液的配制知识】 84消毒液是一种常用的含氯消毒剂,主要成分为次氯酸钠,其有效氯含量通常在5%左右。有效氯是衡量消毒液消毒能力的重要指标,它决定了消毒液的消毒效果。在实际应用中,我们需要根据消毒需求...
模拟水配制及地层水矿化度计算程序
电子政务-三元材料前驱体用电池级氨水配制系统.zip
红细胞悬液的配制.pdf
溶液配制小软件
6. **适用范围**:75%医用酒精适用于手部消毒,84消毒液和新洁尔灭用于洁净区的多方面消毒。不同消毒液的交替使用可以防止耐药性产生。 7. **注意事项**: - 配制的消毒液应尽快使用,最长不超过24小时。 - 盛装...
同时,不要忘记在`/etc/resolv.conf`中配置DNS服务器,以确保域名解析正确。最后,通过`ifdown`和`ifup`命令重启网络服务,应用新的配置。 主机名的修改也相当简单,只需要编辑`/etc/hostname`文件即可。 接着,...
以上试剂的配制过程中涉及多个关键技术点,如溶液的pH值调节、溶液的灭菌处理、溶液的最终定容以及溶液的储存条件等。这些技术点要求操作者具备一定的实验技巧和理论知识。在实验中,准确测量和严格遵守操作程序是...
盐酸标准溶液的配制与标定方法、数据处理、结果计算
在标题提到的“84消毒液浓度配制公式”中,涉及到的关键知识点包括如何计算所需原液量以及配制特定浓度的消毒液。公式如下: 需抽取的84消毒液 = 需配制浓度(x%)x 1000ml = 原溶液浓度(y%)x 1000ml 这个公式...
jetty api文档,高级技术开发应用.欢迎下载使用
包衣液配制标准操作程序是制药行业中一项关键的生产环节,主要应用于药物制剂的薄膜包衣过程。这种操作程序的设立旨在确保包衣液的配制符合严格的工艺质量和安全标准,以保证最终产品的质量和稳定性。 1. **目的**...
聚合物驱通常使用清水来配制聚合物溶液,但若能够利用采油污水来替代清水,不仅可以节约水资源,减少污水排放量,还能缓解注采不平衡问题,对环境保护也具有积极影响。鉴于此,研究采油污水配制聚合物溶液的可行性...
【油田聚合物配制站监控系统的开发与研究】 在当今数字化和智能化的浪潮下,油田生产也逐渐走向自动化和信息化。油田聚合物配制站监控系统是这一趋势下的重要成果,它结合了现代信息技术和石油工程,实现了对油田...
#### 二、消毒液配制方法与计算公式 1. **消毒液稀释浓度计算公式**: - 正确公式:浓溶液容量 = (稀溶液浓度 / 浓溶液浓度) * 稀溶液容量 - 解析:此公式用于计算从高浓度消毒液稀释到所需低浓度消毒液所需的浓...