我的网站是.net做的,需要实现伪静态,插件用的是MSDNURLRewriting,我的文件夹结构是每个频道用一个文件夹保存,频道有首页index.aspx。网站首页域名是www.abc.com
频道页面使用伪静态二级域名的方式,比如,新闻频道就是http://news.abc.com/,真实地址就是http://www.abc.com/news/问题出现了,我用http://news.abc.com/news/也可以访问到页面,因为泛域名解析了,导致这样的错误地址也可以访问。现在我需要遇到http://news.abc.com/news/的页面请求,一律跳转到http://news.abc.com/请问有什么好的解决办法吗?

解决方案 »

  1.   

    是的,真HTML是最好,但你是伪静态
      

  2.   

    IHttpModule
    判断下路径 不对的一律跳转
      

  3.   

    http://www.cnblogs.com/junjun0803/archive/2007/06/25/781807.html
      

  4.   

     或者在 Global 中protected void Application_Start(Object sender, EventArgs e)
        {
           自己写代码控制转向,通过域名地址去判断
      

  5.   

    protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            }在这个事件中控制跳转
      

  6.   


    说的正确!
    具体的用法是:写一个类,实现IHttpModule接口
    然后再web.config里面指定你的类名(要含命名空间)
    <httpModules>
          <add name="xxx" type="namespace.classname" />
    </httpModules>
      

  7.   

    在.Net2.0中,每个程序根目录(虚拟主机的Web目录)下都可以建一个Global.asax文件,用来处理aspx网页文件的请求,这里面贡献最大的就是HttpContext.Current.RewritePath(string path)这个方法。无论地址栏里的路径是什么,都可以通过这个方法重写到真实的网址上去。下面看一下具体的操作方法。
    建立一个全局配置文件Global.asax,添加下面的事件protected void Application_BeginRequest(object sender, EventArgs e)
    {
    //这里添加重写的过程
    //示例
    string url = HttpContext.Current.Request.Url.ToString();
    url = Regex.Replace(url, "newsdetail_([0-9]+)\.aspx","newsdetail.aspx?id=$1", RegexOptions.IgnoreCase);
    HttpContext.Current.RewritePath(url);}上面的功能就可以把http://**/newsdetail_12.aspx重写为http://**/newsdetail.aspx?id=12