论坛首页 Java版 Tomcat

新浪博客、搜狐博客的二级域名是如何实现的?

浏览 1695 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-11-26 关键字: urlrewrite Java Tomcat JBoss 二级域名 动态域名解析
是否可以用JBoss、Tomcat或urlrewrite filter的url重写来实现?

请详细说明,用什么技术(是否可以用urlrewrite filter实现),新浪使用了什么技术?搜狐使用了什么技术?

Thanks very much!
   
最后更新时间:2007-11-26
能否使用urlrewrite filter实现?
   
0 请登录后投票
最后更新时间:2007-11-26
新浪用的是php不是java,用是apache里面的功能
   
0 请登录后投票
最后更新时间:2007-11-26
sohu 使用的是 struts , 那么sohu使用了什么技术呢 ?

如果使用 Apache Virtual Host 是否需要域名服务商的泛域名支持?
对于 Tomcat 或 JBoss , 是否可以使用 urlrewrite filter ?

Thanks very much!
   
0 请登录后投票
最后更新时间:2007-11-26
用任何web server都能实现。dns必须设置为泛域名

然后再根据http header中的 HOST 作dispatch
   
0 请登录后投票
最后更新时间:2007-11-26
sohu blog 的二级域名是如何实现的?Virtual Host 开始 Rewrite ?
   
0 请登录后投票
最后更新时间: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") 来获取用户名即可.
   
0 请登录后投票
最后更新时间:2007-11-26
主流的web服务器皆有此功能,tomcat也有,几年前简单实践过,好像是Visual Host的概念,只要配置好即可。

若基于二级域名的应用,一个filter就可以实现访问分流的功能。
   
0 请登录后投票
论坛首页 Java版 Tomcat

跳转论坛:
JavaEye推荐