ASP.net URL重写

想做出像sohu博客那样,url地址最前面是用户自定义的前缀,该怎么做?有好的答案加分。... 想做出像sohu博客那样,url地址最前面是用户自定义的前缀,该怎么做?
有好的答案加分。
展开
 我来答
geto1080
2009-04-29 · TA获得超过320个赞
知道小有建树答主
回答量:1359
采纳率:100%
帮助的人:528万
展开全部
第一步:下载 Intelligencia.UrlRewriter.dll组件,这个网上太多了。

第二步:添加Intelligencia.UrlRewriter.dll的引用。

第三步:在web.config中设置三个地方

1、在<configSections></configSections>节中加上<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />;

2、在<httpModules></httpModules>节中加上<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>;

3、在<configuration></configuration>节中添加<rewriter> <rewrite url="~/(.+).html$" to="~/ViewNews.aspx?ID=$1" /> </rewriter> (这段替换规则需要根据你的实际需要去修改,如果要重写成HTML的格式,需要在IIS中设置映射,这个网上方法非常多。其中替换规则可以设置多个。)elligencia.UrlRewriter.dll的引用。

常用规则
当使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,IIS的默认文档机制也就失去了该有的作用,以下代码就是用来重新实现默认文档的方法:

<rewrite url="^(.*)/(\?.+)?$" to="$1/default.aspx$2" />
注意:使用“processing="restart"”的时候将会导致重写引擎从头开始执行所有的重写规则,此时应当注重包含“/default.aspx”字符串的处理。

如果你需要同时支持多个默认文档,那么以上代码需要修改为:

<if url="^(.*)/(\?.+)?$"> <rewrite exists="$1/default.aspx" to="$1/default.aspx$2" /> <rewrite exists="$1/index.aspx" to="$1/index.aspx$2" /> <rewrite exists="$1/index.html" to="$1/index.html$2" /></if>
编辑以上规则代码的时候,尤其要注意确认文件是否存在。

此外,在使用通配符映射或者使用ASP.NET处理所有HTTP请求的时候,你会发现.gif、.css等文件无法正常访问,这是因为此时对这些文件类型的处理都被ASP.NET所拦截。修正方法如下:

<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
两个比较特殊的正则表达式字符是“^”和“$”(不是必须的),“^”代表URL的开头,“$”代表URL的结尾。使用这两个符号可以使您更加精确的控制重写动作,以确保程序所匹配的URL正是您想处理的。

“~/”表示当前网站应用程序运行所在的虚拟根目录,当您把网站应用程序安装于虚拟目录(或者非根目录)的时候,这尤其有用,而无须重新编写任何代码来替换您的虚拟根路径。

模式匹配在处理查询字串(QueryStrings)的时候尤其有用,这可以让您的URL去掉类似于“?id=3”的代码段,这非常有用,可以让你轻松的实现伪静态。

下面列出两个我们认为非常有特色的重写规则:

(1) 当目标URL不包含自定义查询字串的时候:

<rewrite url="^~/mypage(\?.+)?$" to="~/default.aspx$1" />
此时“$1”匹配的是(\?.+)?,也就是所有的查询字串。

(2) 当目标URL包含自定义查询字串的时候:

<rewrite url="^~/mypage(\?(.+))?$" to="~/default.aspx?page=mypage&$2" />
注意此时需要使用“&”来代替“&”,这是XML文档语法的需要。
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
育知同创教育
2018-07-27 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
URL重写可以通过编程的方式来实现:
1、在asp.net项目中引入程序集URLRewriter,即在网站的Bin文件夹中添加URLRewriter.dll。
2、在web.config中的configuration节点下添加URLRewriter的配置。
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
注意:configSections必须是configuration节点下的第一个子元素。
3、在web.config中的system.web节点下添加URLRewriter的配置。
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
</httpModules>
4、在web.config中的configuration节点下配置url重写的规则。
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/article/(\d+)/</LookFor>
<SendTo>~/article_info.aspx?articleId=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
url重写规则说明:
(1)、<RewriterRule>可出现多次,每个重写规则都需要添加一个<RewriterRule>节点。
(2)、在获得匹配<LookFor>节点的url后,转向到相应的<SendTo>节点的url。
(3)、<LookFor>中可使用正则表达式来表示参数。路径转向后,<SendTo>节点中的占位符$1将会用<LookFor>节点中正则表达式所匹配的参数来替换。
(4)、<SendTo>配置中的url占位符可出现多个,如:$2、$3,占位符将按顺序依次由<LookFor>节点中则表达式所匹配的参数来替换。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ajax83316
2009-04-28 · TA获得超过466个赞
知道小有建树答主
回答量:485
采纳率:0%
帮助的人:300万
展开全部
二级域名转换,或者用asp.net的HttpModule来进行地址重写
void Application_BeginRequest(object sender, EventArgs e) {

string fullOrigionalpath = Request.Url.ToString();

if (fullOrigionalpath.Contains("/Products/Books.aspx")) {
Context.RewritePath("/Products.aspx?Category=Books");
}
else if (fullOrigionalpath.Contains("/Products/DVDs.aspx")) {
Context.RewritePath("/Products.aspx?Category=DVDs");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wa...y@163.com
2009-04-28 · TA获得超过228个赞
知道答主
回答量:334
采纳率:0%
帮助的人:0
展开全部
到域名解析器里面做url转换
bbs.sohu.com 对应www.sohu.com/bbs/index.htm
就可以了
记得给踩踩空间哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
妇产小能手DD
2009-04-28 · TA获得超过195个赞
知道答主
回答量:228
采纳率:0%
帮助的人:136万
展开全部
那个是 2级域名吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式