浏览 1695 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-11-26 关键字: urlrewrite Java Tomcat JBoss 二级域名 动态域名解析
是否可以用JBoss、Tomcat或urlrewrite filter的url重写来实现?
请详细说明,用什么技术(是否可以用urlrewrite filter实现),新浪使用了什么技术?搜狐使用了什么技术? Thanks very much! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
能否使用urlrewrite filter实现?
|
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
新浪用的是php不是java,用是apache里面的功能
|
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
sohu 使用的是 struts , 那么sohu使用了什么技术呢 ?
如果使用 Apache Virtual Host 是否需要域名服务商的泛域名支持? 对于 Tomcat 或 JBoss , 是否可以使用 urlrewrite filter ? Thanks very much! |
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
用任何web server都能实现。dns必须设置为泛域名
然后再根据http header中的 HOST 作dispatch |
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
sohu blog 的二级域名是如何实现的?Virtual Host 开始 Rewrite ?
|
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
二级域名有返域名效果即可,url重写并非必须.
通过过滤器将主机头信息的用户名丢到参数里,对后台程序实现透明效果. 例如
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
javax.servlet.http.HttpServletRequestWrapper reqw = new javax.servlet.
http.HttpServletRequestWrapper(
(HttpServletRequest) request
) {
public String getParameter(String name) {
if ("username".equalsIgnoreCase(name)) {
//从主机名头信息重获取信息
String hostName = this.getServerName();
if (hostName != null && hostName.endsWith("blog.sohu.com")) {
String userName = hostName.substring(0,
hostName.length() -
"blog.sohu.com".length());
System.out.println("解析出来的用户名为: " + userName);
if (userName != null && userName.length() > 0) {
return userName;
}
}
return "www";
}
return super.getParameter(name);
}
};
filterChain.doFilter(reqw, response);
}
catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
应用程序里用 request.getParameter("username") 来获取用户名即可. |
|
| 返回顶楼 | |
|
最后更新时间:2007-11-26
主流的web服务器皆有此功能,tomcat也有,几年前简单实践过,好像是Visual Host的概念,只要配置好即可。
若基于二级域名的应用,一个filter就可以实现访问分流的功能。 |
|
| 返回顶楼 | |






