利用URLRewriter.dll实现asp.net页面伪静态!

gudengdulang 2011-04-13 02:44:46
大家好,我用URLRewriter.dll实现asp.net页面的伪静态,现在出现问题就是,web.config文件也改了,IIS配置也改了URLRewriter.dll文件也引用了,可为什么地址栏还是木有变化呢?
web.config文件内容如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>(.+).html</LookFor>
<SendTo>new.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>index.html</LookFor>
<SendTo>index.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<appSettings/>
<connectionStrings/>
<system.web>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>

<compilation debug="true" />

<authentication mode="Windows" />

</system.web>
</configuration>

项目中就一个主页:index.aspx,一个new.aspx页,都在根目录下。
从index.aspx转到new.aspx页时地址栏根本就没有变化!

不知道问题出在哪里,望各位高人指教!
...全文
267 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huiyuan659 2011-04-15
  • 打赏
  • 举报
回复
第一步:下载URLRewriter.dll到 bin文件夹里面。
第二步:配置web.config
在<configSections>节中加入:
<!--加入伪静态文件URLRewriter-->
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

增加<RewriterConfig>节
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/content(.+).html</LookFor>
<SendTo>~/content.aspx?infoid=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<!-- 加上此节点,保证原本就是.html类型的文件能正常访问 -->
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>

在<httpHandlers>中添加
<!--进行伪静态映射-->
<add verb="*" path="*.html"
type="URLRewriter.RewriterFactoryHandler, URLRewriter" />


三、进行超链接
<a href='content<%#Eval("infoid") %>.html' target="_blank>新闻</a>


四、配置iis
可参考
http://blog.csdn.net/renzhaoqiang/archive/2010/01/16/5200366.aspx

完工
gudengdulang 2011-04-14
  • 打赏
  • 举报
回复
15楼的大哥,小弟是真的没做过这个效果!
能否请你写的再详细些,把web.config里的配置也写下!
huiyuan659 2011-04-13
  • 打赏
  • 举报
回复
上面写错了,应该这样
<a href="<%# Eval("id") %>.html" target="_blank">新闻</a>
huiyuan659 2011-04-13
  • 打赏
  • 举报
回复
链接不要写错了
 string id = Request.QueryString["id"].ToString();
Response.Redirect(id + ".html");
gudengdulang 2011-04-13
  • 打赏
  • 举报
回复
11楼的朋友,我知道可以进行一种文件的转换,可我现在要进行两种文件直接的转换,如果你知道的话就说好么,不要说这种话,我如果要进行一种文件的转换我就不会问两种文件的转换了!
xiexiangang 2011-04-13
  • 打赏
  • 举报
回复
藐视可以
b58585885 2011-04-13
  • 打赏
  • 举报
回复
想要实现不同格式间转换,比如你的aspx转htm,需要配置IIS服务器的。你先把一种文件(aspx)的重写弄好再说吧。
zell419 2011-04-13
  • 打赏
  • 举报
回复
<RewriterRule>
<LookFor>index.aspx</LookFor>
<SendTo>new.aspx</SendTo>
</RewriterRule>
如果要重index.aspx伪静态new.aspx 。
应该是以上的写法 。
gudengdulang 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 luoweihua7 的回复:]
把转页面时的new.aspx?id=1重写成1.html
好像不是这样理解的...
好像是当你访问1.html时能lookfor到new.aspx?id=1上...
[/Quote]
恩,确实写的人是这样说的,而且在地址栏显示new.aspx?id=1时是显示的1.html。
8楼的,我照你的方法做了,可是怎么还是不行啊!
SeanDing1989 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gudengdulang 的回复:]
我看别人写的,意思就是能够通过web.config中的这一步:
<RewriterRule>
<LookFor>(.+).html</LookFor>
<SendTo>new.aspx?id=$1</SendTo>
</RewriterRule>
把转页面时的new.aspx?id=1重写成1.html
我做到现在,能够在项目中在转页面是把new.aspx?id=1写成ne……
[/Quote]

你配置错了。 你的带参数。
<RewriterRule>
<LookFor>new-(\d+)\.html</LookFor>
<SendTo>new.aspx?id=$1</SendTo>
</RewriterRule>
这样配置。
跳转链接 new-这个地方是你的id.html
如: new-1.html
动态的话:
new-<%# Eval("Id") %>.html

LZ 试试!
V-Far 2011-04-13
  • 打赏
  • 举报
回复
把转页面时的new.aspx?id=1重写成1.html
好像不是这样理解的...
好像是当你访问1.html时能lookfor到new.aspx?id=1上...
gudengdulang 2011-04-13
  • 打赏
  • 举报
回复
我看别人写的,意思就是能够通过web.config中的这一步:
<RewriterRule>
<LookFor>(.+).html</LookFor>
<SendTo>new.aspx?id=$1</SendTo>
</RewriterRule>
把转页面时的new.aspx?id=1重写成1.html
我做到现在,能够在项目中在转页面是把new.aspx?id=1写成new.html?id=1也可以转到new.aspx页面了
但是,为什么我写成new.aspx?id=1时地址栏不会自己变呢,而且写成new.html?id=1时,后面的id=1也还存在呢?我看别人写的好像地址栏就是会自己变的,而且也没后面的那个?id=1了!
子夜__ 2011-04-13
  • 打赏
  • 举报
回复
IHttpHandler
参考
叶子 2011-04-13
  • 打赏
  • 举报
回复

<rewriter>
<rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>

叶子 2011-04-13
  • 打赏
  • 举报
回复
你webconfig里面配置的和我以前写的不一样,把什么重新成什么?
参考:
http://www.cnblogs.com/jazzka702/archive/2009/07/13/1522663.html
SeanDing1989 2011-04-13
  • 打赏
  • 举报
回复
你从index.aspx转到new.aspx的时候 连接写的是什么? new.aspx 还是 new.html?
你要写成new.html !
_程序员 2011-04-13
  • 打赏
  • 举报
回复
你把浏览器地址栏的那个.....aspx改成html看看

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧