当前位置:编程学习 > C#/ASP.NET >>

实现二级域名时出现的问题--顶贴有分

小弟想实现二级域名,采用的组件是UrlRewritingNet.UrlRewriter.dll
现在出现如下问题:

问题一:跳转时产生的问题,在首页我做了域名判断跳转

 /// 
        ///取得二级域主机头值,并实行转向
        /// 
        public void CheckDomain()
        {
            HostName = HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址
            
            UserHost = HostName.Split(new Char[] { '.' }); //数组,以“.”分隔
            //判断二级域名地址是否符合abc.域名.com 这种格式,及数组UserHost长度不大于3,否则就跳传到其它页
            if (UserHost.Length > 3)
            {
                HttpContext.Current.Response.Redirect("http://www.domain.cn/Error.aspx");//跳转到出错页面
                return;
            }
            UserDomainName = UserHost[0].ToString(); //取得数组最前面一组值,及二级域名主机头
            //进行特定判断,及是不要用到做为二级域名的主机头
            if (UserDomainName.ToLower() == "www" || UserDomainName.ToLower() == "domain" || UserDomainName == null || UserDomainName.ToString() == "")
            {
                //你的动作
            }
            else
            {
                HttpContext.Current.Session["UserDomainName"] = UserDomainName; //将二级域名主机头存入Session
                Server.Transfer("~/" + UserDomainName + "/default.aspx", false);//跳转到用户目录,即是二级域名所要去到的目录,当然你也可以跳传至*.aspx?UserID=xxx这样的链接
                //Response.Redirect("~/" + UserDomainName + "", false);
                return;
            }
        }

如上代码,如果使用Server.Transfer确实可以跳转至目标页面例如http://news.un148.cn/default.aspx
但是在这个目标页中的内容却是连接错误,原因是确实路径,将URL地址修改为http://news.un148.cn/news/detail_24219.htm就可以访问页面。问题就在这里,怎么样可以实现直接点击不修改连接就能访问该新闻页。
问题二:如果使用Response.Redirect那么跳转后的URL地址就为http://news.un148.cn/news/
我想通过URL重写来修改,但是一直没有效果,我的重写配置为:

<add name="Rewrite18" virtualUrl="http://(\w+)\.un148\.cn/" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="http://www.un148.cn/$1/default.aspx" ignoreCase="true"/>

请教高手,我应该怎样实现想要的功能,
--------------------编程问答-------------------- 沙发
关注 帮顶 --------------------编程问答-------------------- 占个位置。。。。上去。。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- LZ有点牛 --------------------编程问答-------------------- 听说顶帖有分,先顶再看! --------------------编程问答--------------------   路径在好好看看·` --------------------编程问答-------------------- 观看,帮顶... --------------------编程问答-------------------- --------------------编程问答-------------------- 为什么要这么麻烦呢,即使用虚拟主机,大部分主机商也都支持name.domain.com映射到www.domain.com/name的配置 --------------------编程问答-------------------- 真愁人,有强人在吗????? --------------------编程问答-------------------- 拿点分,今天头疼,不想想问题 --------------------编程问答--------------------
有点晕,顶一下 --------------------编程问答-------------------- 感谢顶帖的朋友们,但是更希望大家能帮我解决下问题.... --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 等高手,等高手,高手咋还不来? --------------------编程问答-------------------- 顶帖,顶帖.... --------------------编程问答-------------------- --------------------编程问答-------------------- 看了几遍还没看懂什么意思,大概是饿晕了吧
--------------------编程问答-------------------- 郁闷啊,这个问题怎么就寂寞上了啊? --------------------编程问答-------------------- 接分。。没看懂需求 --------------------编程问答-------------------- 你的问题我都看晕了. --------------------编程问答-------------------- 其实我的问题就是想通过URL重写来修改URL达到我所要的效果 --------------------编程问答-------------------- URL重写真有那么困难吗? --------------------编程问答-------------------- URL重写very easy,但是我遍看代码,除了配置没发现哪用到了URL重写的东西,Server.Transfer和URL重写毛关系没有, 也可能是偶才识学浅,等高人解惑 --------------------编程问答--------------------
引用楼主 mm6268 的回复:
如上代码,如果使用Server.Transfer确实可以跳转至目标页面例如http://news.un148.cn/default.aspx
但是在这个目标页中的内容却是连接错误,原因是确实路径,将URL地址修改为http://news.un148.cn/news/detail_24219.htm就可以访问页面。问题就在这里,怎么样可以实现直接点击不修改连接就能访问该新闻页。


如果目标也连接等错误 你看看是不是路径问题 把链接都改成相对服务器的路径 --------------------编程问答-------------------- 不懂 打点帮顶................................ --------------------编程问答-------------------- 你的问题,就是出在Server.Transfer上
比如你是:
http://abc.www.a.com/
跳到http://www.a.com/abc/abc.aspx
因为你用的是Server.Transfer,所以abc.aspx里的内容都以http://abc.www.a.com/这个路径为准了
比如图片<img src="1.jpg">
访问这个地址:http://www.a.com/abc/abc.aspx,这个图片就是:http://www.a.com/abc/1.jpg
而访问这个地址:http://abc.www.a.com/,这个图片就是:http://abc.www.a.com/1.jpg
当然会找不到了
一个解决方案就是在页面中不要使用相对路径,而是使用/开头的绝对路径,比如:
<img src="/abc/1.jpg"

--------------------编程问答-------------------- 使用 RewritePath([url]) 方法试试 --------------------编程问答-------------------- 至于Url重写,你可以去微软网站下载源代码和示例:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,