关于url重写我就不多解释了,主要说我遇到的问题吧!在此之前先介绍一下我的开发环境 vs2005,xp,iis6.0,重写的组件用的Intelligencia.UrlRewriter.dll问题
1:在vs中运行网站程序没有任何错误,通过url重写能使
http://localhost:1086/site/aboutus/
这样的url访问到
http://localhost:1086/site/aboutus.aspx
但是当我在iis中访问时只能用.aspx结尾的url访问页面
之前写在页面中的以.html结尾的页面全部返回404错误
但是之前这些url在vs下面都是可以访问的2:对于Intelligencia.UrlRewriter.dll的组件的正则表达式的解析不是很明白
比如 <rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
这段应该只能解析出 "http://***/***/aboutus/" 到 aboutus.aspx页面
但是它竟然可以把"http://***/***/aboutus/([^.]+)\.html" 也解析到
aboutus.aspx页面 并且..并且可怕的是$1竟然可以取到 aboutus 这个正确的值
请那位高人帮忙解释下,小弟刚使用这个组件,还不是很了解....3:怎样使用Intelligencia.UrlRewriter.dll组件设置二级域名望各位高手不要吝啬只言片语,小弟只有100多分了,都拿出来了,各位不要嫌分少
1:在vs中运行网站程序没有任何错误,通过url重写能使
http://localhost:1086/site/aboutus/
这样的url访问到
http://localhost:1086/site/aboutus.aspx
但是当我在iis中访问时只能用.aspx结尾的url访问页面
之前写在页面中的以.html结尾的页面全部返回404错误
但是之前这些url在vs下面都是可以访问的2:对于Intelligencia.UrlRewriter.dll的组件的正则表达式的解析不是很明白
比如 <rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
这段应该只能解析出 "http://***/***/aboutus/" 到 aboutus.aspx页面
但是它竟然可以把"http://***/***/aboutus/([^.]+)\.html" 也解析到
aboutus.aspx页面 并且..并且可怕的是$1竟然可以取到 aboutus 这个正确的值
请那位高人帮忙解释下,小弟刚使用这个组件,还不是很了解....3:怎样使用Intelligencia.UrlRewriter.dll组件设置二级域名望各位高手不要吝啬只言片语,小弟只有100多分了,都拿出来了,各位不要嫌分少
if (rootPath.Length == 1) rootPath = "";Response.Redirect(rootPath + "/default.aspx");
对于组件的正则,相关的看下正则表达式的帮助,你上网找下,学习下正则表达式也是不错的二级域名上网一搜很多 ...good luck!
-------
有这个开发环境,不用任何组件一样很容易实现重写
1.httpmodule类
2.Global.asax中
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Url.ToString() == "1.html")
{
Response.Redirect("1.aspx");
}
}
比如 <rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
这段应该只能解析出 "http://***/***/aboutus/" 到 aboutus.aspx页面
但是它竟然可以把"http://***/***/aboutus/([^.]+)\.html" 也解析到
aboutus.aspx页面 并且..并且可怕的是$1竟然可以取到 aboutus 这个正确的值
-----------------------------------
这说明你可能不懂正则<rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
说明,只要url中有"/aboutus/",就会重写,并且,$1替换为aboutus,就是小括号中的东东
二级域名要靠泛解析,或DNS服务器
你可以在IIS中为目录设定默认的访问页面,如default.aspx,这就避开了问题,
然后就是重写URL的事了
正则表达式虽然不是我的强项,但是像这种还是没有问题的
可能是我的解释不够清楚我问得第二个问题是
我用<rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
解析url 这里面的"/(aboutus)/?" 难道不是说:
只要是以"aboutus"结尾或则以"aboutus/"结尾才匹配么
我的问题是这段正则竟然可以匹配 "/aboutus/***/ddd/(后面还可接任意数量的任意字符)"
这样的url , 也就是说 只要url中有"/aboutus/"这么一段就会被解析到about.aspx页面另外第三个问题是
在设置 rewrite 节点的时候,是截取不到"http://***/"这段的
所以是不可能分析的到二级域名的,应该不关泛解析和dns什么事再次谢谢ls三位
我用 <rewrite url="/(aboutus)/?" to="/site/$1.aspx" />
解析url 这里面的"/(aboutus)/?" 难道不是说:
只要是以"aboutus"结尾或则以"aboutus/"结尾才匹配么
我的问题是这段正则竟然可以匹配 "/aboutus/***/ddd/(后面还可接任意数量的任意字符)"
这样的url , 也就是说 只要url中有"/aboutus/"这么一段就会被解析到about.aspx页面
-----------------------------
所以我才说你不懂正则
要想只要是以"aboutus"结尾或则以"aboutus/"结尾才匹配
"/(aboutus)/?$"
在设置 rewrite 节点的时候,是截取不到"http://***/"这段的
所以是不可能分析的到二级域名的,应该不关泛解析和dns什么事
-------------------------------------
我想告诉你一件事,二级域名不是什么组件就可以办成的事
一定要靠 泛解析,或DNS服务器
这里是我大意了,呵呵,低级错误,自己先鄙视一个,阿飞教训的是另外在iis中访问网站的问题也解决了,现在只剩最后一个问题了就是二级域名的问题,我现在的网站还没有放在服务器上,但是放上去后就会
设置二级域名,我的问题就是设置了二级域名后我要将相应的二级域名解析到
相应的网页比如我要将http://topic.csdn.net解析到http://www.csdn.net/index.aspx网页
那我写正则表达式则要这样
<rewrite url="^http://(topic)\.csdn\.net" to="http://www.csdn.net/index.aspx" />
现在问题出来了,我在调试中发现这里解析的url并不包含"http://topic.csdn.net"这段,如果阿飞知
道的话请指教下,或则提供下你的思路,不胜感激...
-------------
你不泛解或dns,这个域名根本就不会向你的服务器发出请求