ASP.NET URL重写(伪静态)
1.下载URLRewriter
下载URLRewriter.dll,并在项目中引入程序集URLRewriter,即在网站的Bin文件夹中添加URLRewriter.dll。
或者安装服务器中安装urlrewrite2
2.在web.config中的configuration节点下添加URLRewriter的配置,注意:configSections必须是configuration节点下的第一个子元素。
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
3.配置伪静态规则
- appendQueryString="false"这个控制是否传递get参数
<system.webServer>
<rewrite>
<rules>
<rule name="Rule1">
<match url="^123_t([0-9]+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="Default.aspx?id={R:1}" appendQueryString="false" />
</rule>
<rule name="Rule2">
<match url="^123.html" ignoreCase="false" />
<action type="Rewrite" url="Default.aspx" appendQueryString="false" />
</rule>
<rule name="Rule3">
<match url="^job/l-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="JobList.aspx?id={R:1}&page={R:2}" appendQueryString="false" />
</rule>
<!--首页重写-->
<rule name="index" stopProcessing="true">
<match url="^(|/)$" />
<action type="Rewrite" url="/views/Index.html" />
</rule>
<!--带字母重写-->
<rule name="artlist3">
<match url="^yanjiusheng/([a-z]+)/$" ignoreCase="false" />
<action type="Rewrite" url="ArticlePage/List/1/0/{R:1}/" appendQueryString="false" />
</rule>
<!--万能字符匹配-->
<rule name="shijuan">
<match url="^shijuan/school/([\s\S]*?).html$" ignoreCase="false" />
<action type="Rewrite" url="SchoolPage/Judge/{R:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
补充:网上也有另一种配置方法,这里也贴下,引用的dll也是一样的,如下
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Index.html</LookFor>
<SendTo>~/Index.aspx</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Index/t_([0-9]*)/ID_([0-9]*).html$</LookFor>//如:http://localhost:60948/Index/t_8/ID_456.html
<SendTo>~/Index.aspx?type=$1&id=$2</SendTo>s
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.webServer>
<handlers>
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler,URLRewriter" name="urlrewriter"/>
</handlers>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
url重写规则说明:
可出现多次,每个重写规则都需要添加一个 节点。 - 在获得匹配
节点的url后,转向到相应的 节点的url。 中可使用正则表达式来表示参数。路径转向后, 节点中的占位符$1将会用 节点中正则表达式所匹配的参数来替换。 配置中的url占位符可出现多个,如:$2、$3,占位符将按顺序依次由 节点中则表达式所匹配的参数来替换。
如果涉及到反代,那么需要先安装requestRouter_amd64,然后开启反代,反代才会生效。这是一个大坑。
版权声明:
作者:亦灵一梦
链接:https://blog.haokaikai.cn/2020/weihu/windows/980.html
来源:开心博客
文章版权归作者所有,未经允许请勿转载。
THE END
1
二维码
海报
ASP.NET URL重写(伪静态)
1.下载URLRewriter
下载URLRewriter.dll,并在项目中引入程序集URLRewriter,即在网站的Bin文件夹中添加URLRewriter.dll。
或者安装服务器中安装urlrewrite2
……