设为首页 收藏本站
查看: 1019|回复: 0

[经验分享] Asp.Net中通常不修改IIS实现URL重写,支持任意扩展名及无扩展名(伪静态)

[复制链接]

尚未签到

发表于 2017-2-13 10:59:56 | 显示全部楼层 |阅读模式
  说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用
  12345.html
  替换
  show.aspx?id=12345这样的地址访问
  也可以实现百度空间的
  http://hi.baidu.com/wu1987116
  替换
  http://hi.baidu.com/index.aspx?UserName=wu1987116
  功能,支持任意扩展名及无扩展
  程序要调整的部分只有两块。
一是web.config文件。
二是链接地址。
所需urlrewrite.dll
  首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
  下载安装后再bin目录下找到URLRewriter.dll文件
  好了开始实施。
第一步:将urlrewrite.dll下载到你的web程序目录里去。哪都行。我是放在bin里面的。然后添加引用,将urlrewrite.dll引用进来。
第二步:修改web.config
这一步要修改几个地方。要注意位置是不同的
  1 在web.config文件中加入如下代码,注意要放在<configuration>下面, <appSettings/>
<connectionStrings/> <system.web>上面不然会出错

  <configSections>
<sectionname="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
  其中

  <section name="RewriterConfig"
type
="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
  用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中
  2 在web.config文件中的system.web节点下加入如下代码
   <httpHandlers>
<add verb="*" path="*.html"
type
="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
<add verb="*" path="*"
type
="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
</httpHandlers>

  这段代码的意思是:将文件扩展名为.html和任意扩展名(包括无扩展名,不包括*.html,因为这个位置在上面会先处理)的文件的所有 HTTP 请求映射到类 URLRewriter.RewriterFactoryHandler,注意顺序,按从上到下执行,如果path="*"在上面的话,则下面的html映射则无效,下面步骤中有映射到那个页面的设置
  3 重写url
  和1一样 ,同样是放在<configuration>节点下面
  关键就是
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/(.+).html</LookFor>
<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/(.+)</LookFor>
<SendTo>~/blog.aspx?UserName=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
  效果:当访问http://127.0.0.1/123.html时,实际访问的是http://127.0.0.1/Shownews.aspx?ShowID=123
   访问http://127.0.0.1/任意字符时,实际访问的是http://127.0.0.1/blog.aspx?UserName=任意字符
  注意第2,3步中的映射顺序
  其中关键在url的转换
<LookFor>~/(.+).html</LookFor>

<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>
  意思是把第一个路径转成另一个路径。其中<LookFor>()中的正则表达式就是第二句中的参数$1 .
  同样也可以用$2 $3来表示<LookFor>中第二 第三个()中的参数。
  多个参数:
  <ReWriterUrls>
<rule>
<old>(.*)/TestUrlRe/file(.*)/(.*)\.html</old>
<new>../WebForm1.aspx?id=$2&amp;type=$3</new>
</rule>
<rule>
<old>(.*)/TestUrlRe/t(.*)/(.*)\.html</old>
<new>../WebForm1.aspx?tid=$2&amp;ttype=$3</new>
</rule>
</ReWriterUrls>

  第三步:在页面程序中可以这样写:
<a href="news_<%=newsid%>.html" target="_blank">新闻标题</a>

完成上面三个步骤就可以轻松实现URL重写了,不过需要注意的是:如果发布网站的话,你会发现你的URL重写有可能会失效,如果失效的话就需要您设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。
上面设置完毕之后,就可以正常浏览了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-341429-1-1.html 上篇帖子: 转 asp.netAsp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名 下篇帖子: 安装完IIS后访问localhost需要密码的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表