二级或二级以上域名 和 目录以及后缀同时重写.
在这里代码我就不作解释了,下载代码自己研究吧(有注释).
原代码在文章末尾提供下载.
1.域名解析问题
请确定你的域名是支持泛解析的。然后你的网站为默认网站,否则将不能实现。
图1
2.IIS配置:在IIS\你的站点\属性\主目录\配置\映谢 在通配符应用程序配置处插入一个新的映射。
把可执行文件设为和上面ASPX页面同样的配置即可(注意不要勾选 “确定文件是否存在”)。
图2
图3
3.查看你的网站主机头,里面的第一个主机头值必须为空,否则会出现错误的请求。后面随你加.
图4
4. Web.Config 配置
1<system.web>
2 <httpModules >
3 <add type="Qiaozw.UrlRewrite.ModuleRewriter,Qiaozw.UrlRewrite" name="ModuleRewriter"/>
4 </httpModules>
5 </system.web>
2 <httpModules >
3 <add type="Qiaozw.UrlRewrite.ModuleRewriter,Qiaozw.UrlRewrite" name="ModuleRewriter"/>
4 </httpModules>
5 </system.web>
5.最后配置 /config/URLRewrit.config 文件。
重写配置--样例:
1<RewriterConfig>
2 <RewriterRule>
3 <LookFor>http://www.域名.com</LookFor> 主域名定位
4 <SendTo>/default.aspx</SendTo>
5 </RewriterRule>
6
7 <RewriterRule>
8 <LookFor>域名.com</LookFor> 主域名定位
9 <SendTo>/default.aspx</SendTo>
10 </RewriterRule>
11
12 <RewriterRule>
13 <LookFor>http://域名.com</LookFor> 主域名定位
14 <SendTo>/default.aspx</SendTo>
15 </RewriterRule>
16
17 <RewriterRule>
18 <LookFor>http://([\a-zA-Z0-9]{4,10}).域名.com/(\d{1,5})</LookFor> 二级域名与目录同时重写. 注:多级域名重写修改正则表达式
19 <SendTo>/test/test.aspx?domain=$1&path=$2</SendTo>
20 </RewriterRule>
21
22 <RewriterRule>
23 <LookFor>http://([\a-zA-Z0-9]{4,10}).域名.com/(\d{1,5})/(\d{1,5}).html</LookFor> 二级域名与目录以及后缀同时重写. 注:多级域名重写修改正则表达式
24 <SendTo>/test/test.aspx?domain=$1&path=$2&path1=$3</SendTo>
25 </RewriterRule>
26
27 <RewriterRule>
28 <LookFor>/([0-9]{1,5})</LookFor> 目录重写
29 <SendTo>/test/test.aspx?path=$1</SendTo>
30 </RewriterRule>
31
32 <RewriterRule>
33 <LookFor>/([a-z]{1,5})</LookFor> 目录重写
34 <SendTo>/test1/test1.aspx?path=$1</SendTo>
35 </RewriterRule>
36
37 <RewriterRule>
38 <LookFor>/([a-z]{1,5})/([0-9]{1,5}).html</LookFor> 目录和及后缀同时重写
39 <SendTo>/test1/test1.aspx?path=$1&path=$2</SendTo>
40 </RewriterRule>
41</RewriterConfig>
42
2 <RewriterRule>
3 <LookFor>http://www.域名.com</LookFor> 主域名定位
4 <SendTo>/default.aspx</SendTo>
5 </RewriterRule>
6
7 <RewriterRule>
8 <LookFor>域名.com</LookFor> 主域名定位
9 <SendTo>/default.aspx</SendTo>
10 </RewriterRule>
11
12 <RewriterRule>
13 <LookFor>http://域名.com</LookFor> 主域名定位
14 <SendTo>/default.aspx</SendTo>
15 </RewriterRule>
16
17 <RewriterRule>
18 <LookFor>http://([\a-zA-Z0-9]{4,10}).域名.com/(\d{1,5})</LookFor> 二级域名与目录同时重写. 注:多级域名重写修改正则表达式
19 <SendTo>/test/test.aspx?domain=$1&path=$2</SendTo>
20 </RewriterRule>
21
22 <RewriterRule>
23 <LookFor>http://([\a-zA-Z0-9]{4,10}).域名.com/(\d{1,5})/(\d{1,5}).html</LookFor> 二级域名与目录以及后缀同时重写. 注:多级域名重写修改正则表达式
24 <SendTo>/test/test.aspx?domain=$1&path=$2&path1=$3</SendTo>
25 </RewriterRule>
26
27 <RewriterRule>
28 <LookFor>/([0-9]{1,5})</LookFor> 目录重写
29 <SendTo>/test/test.aspx?path=$1</SendTo>
30 </RewriterRule>
31
32 <RewriterRule>
33 <LookFor>/([a-z]{1,5})</LookFor> 目录重写
34 <SendTo>/test1/test1.aspx?path=$1</SendTo>
35 </RewriterRule>
36
37 <RewriterRule>
38 <LookFor>/([a-z]{1,5})/([0-9]{1,5}).html</LookFor> 目录和及后缀同时重写
39 <SendTo>/test1/test1.aspx?path=$1&path=$2</SendTo>
40 </RewriterRule>
41</RewriterConfig>
42
如要修改配置文件路径,请在 RewriterConfig.cs >>RewriterConfiguration.GetConfig() 里修改
另外在这里请教下个位谁知道这是什么原因, 有哪位高手知道?
1 try
2 {
3 //此处二级域名重写错误 出现未将对象引用设置到对象的实例的异常
4 //注:一下参数正常
5 context.RewritePath(sendToUrlLessQString, string.Empty, queryString);
6 }
7 catch (Exception e)
8 {
9 context.RewritePath(sendToUrl); //异常后再次重写便重写成功. (原因不明)
10 }
11
2 {
3 //此处二级域名重写错误 出现未将对象引用设置到对象的实例的异常
4 //注:一下参数正常
5 context.RewritePath(sendToUrlLessQString, string.Empty, queryString);
6 }
7 catch (Exception e)
8 {
9 context.RewritePath(sendToUrl); //异常后再次重写便重写成功. (原因不明)
10 }
11
代码下载: 二级重写UrlRewrite.rar
不算完全原创也算我的劳动成果吧.
转载请注明出处:http://www.cnblogs.com/cn795/archive/2009/09/03/1559902.html
作者:黑白之间
主页: http://cn795.cnblogs.com/
标签:二级域名 重写 URLRewrite 目录重写 .