返回

URLRewriter 配置文件设置

发布时间:2022-11-16 10:08:57 229
# html# php# windows# 脚本# 信息

<!--设置地址重写组件-->

<configSections>

<section name="rewriter"type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,Intelligencia.UrlRewriter" />

</configSections>

<!--地址重写规则-->

<rewriter>

<rewrite url="^/User/(/d+)$" to="~/User.aspx?id=$1" processing="stop" />

<rewrite url="^/User/(/w+)$" to="~/User.aspx?name=$1" processing="stop" />

</rewriter>

地址重写规则可以链接到外部XML文件:<rewriter file="~/App_Data/rewrite.xml"/>

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

<rewriteRules>

<rewrite url="^~/Article/([^/.]+)/.html$" to="~/Article/Display.aspx?n=$1" />

</rewriteRules>

<!--httpModules-->

<system.web>

<httpModules>

<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" />

</httpModules>

</system.web>

注意事项:

processing="stop":UrlRewriter.NET 在找到一个匹配的重写规则时,不会就此停止,而会继续寻找其余的匹配项,最终生效的则是能够匹配当前请求的最后一个重写规则。如果我们需要 UrlRewriter.NET在找到某个匹配项之后即生效,就需要将processing属性设为stop。例如在上面的配置里,如果“/User/” 后紧跟着数字,则会使用用户ID进行查找,否则则认为当前所提供的是用户名。

url中的正则必需用小刮号封起来,传入的URL要符合url中的设置规则例如:url="^~/Article/([^/.]+)/.html$" 传入必需为fda.html,aaa.aspx即不行,修改正则式后要重新加载解决方案。

入门篇:

1. 简单实现/去掉问号

<rewrite url="^~/Article/([^/.]+)/.html$" to="~/Article/Display.aspx?n=$1" />

说明:url的规则必需是“除了'.'号之外的任何字符加.html”,例:“abc.html”。

实际地址:Disply.aspx?n=abc

2. 无扩展名/任意扩展名

<rewrite url="^~/Article/([^/.]+)(/..+?)?$" to="~/Article/Display.aspx?n=$1" />

说明:maozhuxi maozhuxi.htm maozhuxi.html maozhuxi.asp .php maozhuxi.dfkwkfjkskdd

实际地址:Display.aspx?n=maozhuxi

3. 404检测

<rewriteRules>

<!-- 404检测: ~/Article/maozhuxi.html -->

<if url="~/Article/maozhuxi.html" exists="~/Article/maozhuxi.html">

<forbidden />

</if>

<rewrite url="^~/Article/([^/.]+)(/..+?)?$" to="~/Article/Display.aspx?n=$1" />

</rewriteRules>

存在:~/Article/maozhuxi.html,会显示:无法提供此类型的页

不存在:~/Article/maozhuxi2.html,会显示:maozhuxi2

4. 封IP

<rewriteRules>

<!-- 封IP: ~/Article/maozhuxi.html -->

<if url="~/Article/maozhuxi.html" address="192.*">

<redirect to="~/" />

</if>

<rewrite url="^~/Article/([^/.]+)(/..+?)?$" to="~/Article/Display.aspx?n=$1" />

</rewriteRules>

会封:~/Article/maozhuxi.html,会:跳转到主页(注意修改重写规则中的IP地址)

不封:~/Article/maozhuxi2.html,会显示:maozhuxi2

5. 字符串转换器的应用

    <!-- 字符串转换器的应用: ~/Article/.html -->

<rewrite url="^~/Article/([^/.]+?)1/.html$" to="~/Article/Display.aspx?n=${lower($1)}" />

<rewrite url="^~/Article/([^/.]+?)2/.html$" to="~/Article/Display.aspx?n=${upper($1)}" />

转换为小写:~/Article/MAOZHUXI1.html,会显示:maozhuxi

转换为大写:~/Article/maozhuxi2.html,会显示:MAOZHUXI

6. 静态映射的应用

<rewriteRules>

<mapping name="aihao">

<map from="1" to="看书" />

<map from="2" to="抽烟" />

<map from="3" to="玩游戏" />

</mapping>

<!-- 静态映射的应用: ~/Article/.html -->

<rewrite url="^~/Article/([^/.]+?)(/d+?)/.html$" to="~/Article/Display.aspx?n=${aihao:$2|未知}" />

</rewriteRules>

~/Article/maozhuxi1.html,会显示:看书

~/Article/maozhuxi2.html,会显示:抽烟

~/Article/maozhuxi3.html,会显示:玩游戏

~/Article/maozhuxi4.html,会显示:未知

 

进阶篇:

1. 创建并使用自定义动作

<rewriteRules>

<!-- 注册动作解析器 -->

<register parser="VMoom.Framework.HttpModules.UrlRewriter.RewriteActionParser, VMoom.Framework" />

<rewrite url="^~/Article/([^/.]+?)1/.html$" to="~/Article/Display.aspx?n=$1" />

<re url="^~/Article/([^/.]+?)(/d+?)/.html$" to="~/Article/Display.aspx?n=$1$2" />

</rewriteRules>

2. 创建并使用自定义条件

3. 创建并使用自定义转换器

 

(一)、扩展名不变的重写:

重写规则:

<add name="RewritePhoto" virtualUrl="^~/(/d+).aspx"

rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:(此配置应该为默认配置,但有的虚拟主机提供商修改了此配置)

网站->属性->目录->配置(G)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选

(二)、伪静态重写,扩展名为.html等

重写规则:

<add name="RewritePhoto" virtualUrl="^~/(/d+).html"

rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加

可执行文件:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll

扩展名:.html

动作:限制为 GET,HEAD,POST,DEBUG

脚本引擎:选中

确认文件是否存在:不选

(三)、任意扩展名的重写 如:扩展名为.zxjay

重写规则:

<add name="Rewrite1" virtualUrl="^~/(/d+).zxjay"

rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:同上

(四)、无后缀的重写

重写规则:

<add name="Rewrite1" virtualUrl="^~/(/d+)/Default.aspx"

rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:网站->属性->目录->配置(G)...->映射->通配符应用程序映射->插入

可执行文件:c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll

确认文件是否存在:不选

其原理是:请求"当前目录"时,查找默认文档,实现重写,因此重写规则中的"^~/(/d+)/Default.aspx"要与第一个默认文档相对应。

关于“通配符应用程序映射”的详细信息可参考微软的说明

(五)、二级域名到多级域名的重写

(注意:由于条件的限制,该规则没有测试,理论上可以实现,如果有错误,请留言指正,谢谢!)

重写规则:

<add name="Rewrite1" virtualUrl="^http/://(.*).xianfen.net/Default.aspx"

rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

if ($ != jQuery) { $ = jQuery.noConflict(); }

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
WebKit 是一个开源的浏览器引擎 2022-11-16 09:36:30