江大鱼(江振宇)的BLOG

不求大作,只为记录点点滴滴(转载本人原创文章转载请注明出处)

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
本文背景:

http://jzywh.cnblogs.com/archive/2005/09/29/246650.html


网上很多朋友看到我这篇文章,按照我的方法做了,但是还是没有得到想要的效果,其实有些问题需要注意一下,我上篇文章也只是提出了解决这一问题的办法的最核心的内容,有些朋友可能在实际运用中可能会碰到一些问题其实可以根据自己的经验作出相应处理应该可以解决,我在这里帮大家列出几点以帮助大家快速解决问题。


1.域名解析问题
      输入了域名http://1234.abc.com/,浏览器提示找不到网页。首先,你应该确认你的域名是否支持泛域名解析,就是让所有的二级,三级域名都指向你的server。其次,要保证你的站点是服务器上的默认站点,就是80端口主机头为空的站点即可以直接用IP可以访问的http://1234.abc.com/,要么要提示你的站点的错误信息,要么会正确的执行你定义的URLRewrite,要么显示你的站点的首页。

2.不能执行重写的问题
      如果你确认你的域名解析是正确的,但是还是不能重写,访问http://1234.abc.com/会提示路径"/"找不到...,
如果是这样的话,你先添加  ASPNET_ISAPI的通配符应用程序映射(这一步是必需的,Sorry!没有在上篇文章中提出来)。

操作方法:IIS站点属性 ->主目录 ->  配置




点击插入按键



选择或输入C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
取消"确认文件是否存在"前的钩. 
确定

在来访问http://1234.abc.com/  应该是没有问题了。


3. 默认首页失效,因为把请球直接交给asp.net处理,IIS定义的默认首页将会失效,出现这种情形:
访问http://www.abc.com/ 不能访问首页,而通过http://1234.abc.com/default.aspx可以访问。
为解决这个问题,请自己在Web.Config中设置 lookfor /  to /default.aspx 或 index.aspx ..的重写,完全可以解决问题。


OK,我列出了应该会普遍出现的问题的解决方法,如果你出现了我这里没有列出的问题而你自己又不能解决的,请在此回复提问或者给我发邮件或者加我QQ.

                                                                                                  谢谢!

另:本人有偿提供完整用户域名解决方案,QQ:25514088,Email:kerry-jiang#hotmail.com

posted on 2006-02-20 13:29 江大鱼 阅读(9742) 评论(43)  编辑 收藏 网摘 所属分类: ASP.NET

Feedback

#1楼 2006-03-03 05:17 杨欢[未注册用户]
马的,这么好的blog竟然不告诉我。
很专业,看不懂。

  回复  引用    

是jacky?

觉得还是apache的rewrite好用一点...有空去看看我的blog

  回复  引用    

#3楼[楼主] 2006-03-14 11:49 江大鱼      
s@walktree(三木)
是Jacky,忘记这个名字吧,我现在的英文名是Kerry Jiang,haha..
你的blog我会经常去看的,已经加了友情链接。
其实.NET进行URL重写也是很简单的,也是只需写正则表达式就够了,我这里提到的是将域名重写,http://123.abc.com">http://123.abc.comhttp://www.abc.com/">http://www.abc.com/....

  回复  引用  查看    

#4楼 2006-04-18 14:02 petr[未注册用户]
真是一个好东西,江大鱼谢谢你.
  回复  引用    

使用了三级域名后出现登录Cookie丢失的问题。用户如果一段时间不操作,就会出现无法登录,必须关掉浏览器重新开才行。或者如果我更新了dll文件,也会导致这个问题。如果用户选择了记住密码,则必须清除Cookie才能重新登录。请问这是谁的问题啊?
  回复  引用    

#6楼[楼主] 2006-07-11 13:32 江大鱼      
对于这个问题,建议用 cookesless 的Session! 在 Web.config里面配置一下就可以了!
  回复  引用  查看    

#7楼 2006-08-10 11:52 kide111[未注册用户]
用二级域名可以用..但是普通的跳转出现问题如:
http://www.abc.com/2004/04/01.aspx
跳转不过去.. (请问这个应该如何修改?)
而这个是正常的...
http://www.abc.com/2004/04/default.aspx
正常!

<RewriterRule>
<LookFor>http://(www\.)abc\.com/(\d{4})/(\d{2})/(\d{2})\.aspx</LookFor>
<SendTo>~/ShowBlogContent.aspx?year=$2&amp;month=$3&amp;day=$4</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>http://(www\.)abc\.com/(\d{4})/(\d{2})/default\.aspx</LookFor>
<SendTo>~/ShowBlogContent.aspx?year=$2&amp;month=$3</SendTo>
</RewriterRule>

  回复  引用    

@kide111

现在二级域名可以使用了,跳转是跳转了,但我设置了始终跳转到站点首页,这又是什么原因呢?

<RewriterRule>
<LookFor>http://pd\.abc\.com\.cn</LookFor>
<SendTo>/pd/Help.aspx</SendTo>
</RewriterRule>

  回复  引用    

#9楼 2006-08-12 14:51 maitor[未注册用户]
我也出现楼上的问题了,环境 win2KServer+SP4 IIS5.0 framework1.1

<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>http://(\d+)\.abc\.com</LookFor>
<SendTo>http://www.abc.com/Comp/$1/</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>

  回复  引用    

对不起,可不可以上传所编译的dll文件啦
  回复  引用    

是啊!最好上传编译好的DLL文件!
  回复  引用    

#12楼 2006-09-27 16:21 12[未注册用户]
最好上传编译好的DLL文件

否则就是骗人的

  回复  引用    

老兄,我照着你的改了,
为什么不行呢,如果只对域名之后的部分进行重写,可以
对域名进行重写就没问题,
是否还需要改某些东西???

  回复  引用  查看    

请自己在Web.Config中设置 lookfor / to /default.aspx 或 index.aspx ..的重写,完全可以解决问题。

请您写完整,可以吗?

  回复  引用    

#15楼 2006-12-25 17:11 army[未注册用户]
在win2000里如何设置“通配符应用程序映射”?
  回复  引用    

VB.NET 里面 重写 为什么都在根目录?
ASP.NET 里面是正确的
难道需要把 重写类 改成VB 本人理解都是通用的

  回复  引用    

我碰到了URL重写的一些问题,从Google搜索到了您这儿。不知道您是否还能看到,姑且试试。

我的开发环境是ASP.NET,使用的编程语言是C#。
我的URL重写是用了HttpModule,第一步已经将问号去掉了,现在就是后缀名的问题了。
我现在希望能将aspx后缀改成html,比如将http://www.abc.com/aaa_bbb.aspx改成http://www.abc.com/aaa_bbb.html

这个应该怎么做呢?

我已经做的是在IIS中添加了一个新的应用程序映射,扩展名是.html,可执行文件路径同.aspx是一样的。

谢谢~
希望能得到您的答复~

  回复  引用    

你先添加 ASPNET_ISAPI的通配符应用程序映射(这一步是必需的,Sorry!没有在上篇文章中提出来)。

这个做法绝对影响性能!!!!!!!

  回复  引用  查看    

#19楼 2007-03-27 22:45 依天[未注册用户]
我弄成功了~ 还有不会的可以Q我, 445333755
  回复  引用    

#20楼 2007-04-05 13:33 枫叶[未注册用户]
@依天
能不能加我的QQ我的QQ是348349361, 我现在正在做关于实现二级域名的问题, 希望你能帮一下忙, 小弟感激万分

  回复  引用    

#21楼 2007-04-26 11:25 s3[未注册用户]
@依天
倒,Q不让加,给你直接发消息了。
46803380

  回复  引用    

#22楼 2007-04-26 11:33 s3[未注册用户]
http://wpa.qq.com/msgrd?V=1&Uin=445333755&Site=abc&Menu=yes
  回复  引用    

#23楼 2007-04-28 17:08 sisuo[未注册用户]
域名后面的是可以重写了,可是二级域名全重写到了同一个页,我要想达到的目的是在IE地址栏内输入不同的二级域名要打开相应的网页页面,比如输入:http://1234.abc.cn 要打开的是user/1234.aspx的页面,输入:http://efg.abc.cn 要打开的是user/efg.aspx的页面.这样就实现不了了,小弟在此请教了!
  回复  引用    

#24楼[楼主] 2007-05-29 17:05 江大鱼      
@Jason Cui
设置cookie的domain为 .youdomain.com

  回复  引用  查看    

#25楼[楼主] 2007-05-29 17:07 江大鱼      
@12
我只提供解决问题的基本方法和思路,根据个人实际情况不同实现过程中肯定会遇到这样或那样的问题,请根据自己的经验来解决。

  回复  引用  查看    

#26楼[楼主] 2007-05-29 17:12 江大鱼      
@生的伟大活得憋屈
肯定会影响性能,如果在性能要求不高的情况下课直接使用此方法。否则请自行扩展此方法。

  回复  引用  查看    

#27楼 2007-07-12 15:05 HuaHua[未注册用户]
请问如何解决 图片,样式路径不一致的问题?重写么?
  回复  引用    

我试了一下, 发现出现(您没有许可访问这个页面)的页面, 我用的是Windows 2003 small busniess的操作系统。

寻求帮助!!
david@e-firmen.com

  回复  引用    

这可帮了我大忙了,谢谢了。


非常好用的.net验证码类库
WFsoft.wfLibrary.wfVerifyImage v1.6
http://www.wfsoft.com/wf_wfVerifyImage.asp

  回复  引用    

#30楼 2007-08-13 17:38 胡煜[未注册用户]
我不想把二级域名写死在web.config中,而且我要重写的目标url也不能写死
比如:
http://localhost/mdcn.cn/page?name=wutai 这是完整地址
重写:wutai.mdcn.cn/wutai.aspx(html)
如果name=""改变了的话,前面的重写的"".mdcn.cn/"".aspx也要改变.
也就是说这个name的名字在里面不能固定,我在看你在.dll文件改的代码,也就把它写死了呀.if (re.IsMatch(requestedPath))
{
//找到url里的二级域名
string [] UserHost = app.Request.Url.Host.Split ( new Char [] { '.' } );
string domain2=UserHost [0];

//根据需要设定要重写的目标url
string sendToUrl ;
if(domain2==” Love”)
sendToUrl =” /action.aspx?id=1”;
else if(domain2==” call”)
sendToUrl =” /action.aspx?id=2”;
else i f(domain2==” walkwith”)
sendToUrl =” /walk.aspx”;
RewriterUtils.RewriteUrl(app.Context,sendToUrl);
}
因为以上name是从数据库读取出来的,对应的信息是单独网面的名字,如果要增加页面的话,那还要在.dll文件里改呀,这太麻烦了.可不可教我一下怎么实现这个功能.

  回复  引用    

test
  回复  引用    

#32楼 2007-12-29 00:25 .NET的春天      
好不容易找到URL重写的最佳解方案,收藏!
  回复  引用  查看    

#33楼 2008-01-29 15:24 tide[未注册用户]
你好,我URL重写以后,在本地正确,为啥上传到服务器就不对了呢?
错误是无法找到该页

  回复  引用    

#34楼 2008-02-23 10:26 蓝天旭日      
url重写是个很好的办法,不过响应问题到是值得让我们深思是不是要慎用!!
  回复  引用  查看    

--引用--------------------------------------------------
tide: 你好,我URL重写以后,在本地正确,为啥上传到服务器就不对了呢?
<br> 错误是无法找到该页
<br>
--------------------------------------------------------

  回复  引用    

您好
我有个问题 这种解决方案 是不是[只有网站为主机默认网站]才有用?
如果是买的虚拟机空间 可以实现Url重写吗?
这几天碰到这个问题了 在我的本地IIs里 用起来没问题 可是发到服务器就有问题了
报这种错误:
分析器错误信息: 创建 RewriterConfig 的配置节处理程序时出错: 无法生成临时类(result=1)。
error CS2001: 未能找到源文件“C:\WINDOWS\TEMP\oplzath7.0.cs”
error CS2008: 未指定输入

我找了一下答案说:
对C:\WINDOWS\TEMP\这个目录增加 Network Service和 asp.net帐户的写权限。
可我叫服务器提供商设置过了 还是有一样的问题.


期待能获的回复 谢谢

  回复  引用    

#37楼[楼主] 2009-02-18 18:22 江大鱼      
@ChangEliu
买的虚拟机空间可以实现URL重写,但是不能实现域名重写。


对于你的C:\WINDOWS\TEMP地问题,你还是需要要求供应商给与足够的权限。

  回复  引用  查看    

#38楼 2009-05-26 16:50 钟清
你好,
有个问题想跟您一起探讨下,
你说的这个二级域名,我在一台服务器的话,只能设置一个站点的默认主机头为空。那我如果这台服务器有两个站点,要用到二级域名,怎么办.QQ,33738993

  回复  引用    

#39楼[楼主] 2009-05-29 19:02 江大鱼      
@钟清
两个IP

  回复  引用  查看    

#40楼[楼主] 2009-05-29 19:03 江大鱼      
@ChangEliu
Url重写不需要,支持多极用户域名就需要了

  回复  引用  查看    

#41楼[楼主] 2009-05-29 19:05 江大鱼      
@胡煜
UrlRewrite过程中加入你自己的逻辑就够了

  回复  引用  查看    

#42楼 2009-06-27 23:41 Joking[未注册用户]
楼主好技术!
楼主用的是iis6,03的吧
我个人以为,配置,不管怎么样,应该只要通过文件设置就可以了,如果还要用到界面的话。。。。那就还不算最佳方案。。
我也遇到了个问题不知如何解决的,
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
这句在web.config里有了,但却还要在
站点,属性 里加一个.html的扩展名用C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
处理。解析才正常。。而web.config中的那句好像没用掉了,记得web.config的执行顺序是有说是,站点web.config->系统默认的web.config的。所以很想不通。
楼主能否帮忙解答一下哈?

  回复  引用    

#43楼[楼主] 2009-06-29 17:59 江大鱼      
--引用--------------------------------------------------
Joking: 楼主好技术!
楼主用的是iis6,03的吧
我个人以为,配置,不管怎么样,应该只要通过文件设置就可以了,如果还要用到界面的话。。。。那就还不算最佳方案。。
我也遇到了个问题不知如何解决的,
&lt;add verb=&quot;*&quot; path=&quot;*.html&quot; type=&quot;URLRewriter.RewriterFactoryHandler, URLRewriter&quot; /&gt;
这句在web.config里有了,但却还要在
站点,属性 里加一个.html的扩展名用C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
处理。解析才正常。。而web.config中的那句好像没用掉了,记得web.config的执行顺序是有说是,站点web.config-&gt;系统默认的web.config的。所以很想不通。
楼主能否帮忙解答一下哈?
--------------------------------------------------------
IIS6中Module和Handler默认是不处理静态文件的。 IIS7的集成运行模式中可以直接通过配置文件实现。

  回复  引用  查看    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 334004




相关文章:

相关链接: