TypechoJoeTheme

香草物语

统计
登录
用户名
密码
/
注册
用户名
邮箱
输入密码
确认密码

ASP.NET CORE中URL的重写和重定向

Laughing博主
2017-09-05
/
0 评论
/
1,261 阅读
/
379 个字
/
百度已收录
09/05
本文最后更新于2020年09月26日,已超过1309天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

URL的重写和重定向我们还是比较经常用的,不管我们做301跳转还是防盗链亦或是进行SEO,我们都经常使用到URL的重写或者重定向。我本人也是做ERP的,所以业务系统使用的这些功能相对来说比较少,我也只是参考[url href='https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/url-rewriting?tabs=aspnetcore2x']微软官方文档[/url]进行学习,有不足的地方大家多多指教。

重定向

不管是重定向还是重写,我们都需要在startup.cs中调用UseRewriter()中间件。UseRewriter()方法需要一个RewriteOptions参数,这个类位于Microsoft.AspNetCore.Rewrite命名空间。

我们按照如下方式配置重定向,第一个参数是正则表达式,第二个是要跳转的位置,第三个是跳转状态,默认是302,这里我们可以改成301

var options = new RewriteOptions()  
                            .AddRedirect(@"index/(\d+)", "https://www.xiangcaowuyu.net/", 301);  
          app.UseRewriter(options);

这样配置按成后,所有方位/index/*下面的地址都讲跳转到我的博客地址。

同样的,我们可以通过.AddRedirectToHttps(301,443)讲http跳转到https,第一个是状态,一般使用301永久跳转,第二个是https的端口号。
也可以通过.AddRedirectToHttpsPermanent()通过301跳转到443端口

重写

.AddRewrite(@"^index1/(\d+)", "https://www.xiangcaowuyu.net/", skipRemainingRules: true);方法是实现URL重写,第一个参数同样是正则表达式,第二个是要跳转的位置,第三个参数代表是否忽略其他的规则。

通过读取Apache配置文件实现重写

通过.AddApacheModRewrite(apacheModRewriteStreamReader);可以读取Apache的伪静态规则

首先,我们需要创建一个Apache的伪静态规则的txt文件ApacheModRewrite.txt

\# Rewrite path with additional sub directory  
RewriteRule ^/apache-mod-rules-redirect/(.*) https://www.xiangcaowuyu.net/ [L,R=302]  
然后配置startup.cs,如下

using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt"))  
            using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.txt"))  
            {  
                var options = new RewriteOptions()  
                                //.AddRedirect("index1/(.*)","https://www.xiangcaowuyu.net/",301)  
                                .AddApacheModRewrite(apacheModRewriteStreamReader);  
                                //.AddRewrite(@"^index1/(\d+)", "https://www.xiangcaowuyu.net/", skipRemainingRules: true);  
                app.UseRewriter(options);  
            }

IIS重写

配置文件iisUrlRewrite.xml如下

<rewrite>  
  <rules>  
    <rule name="Rewrite segment to id querystring" stopProcessing="true">  
      <match url="^iis-rules-rewrite/(.*)$" />  
      <action type="Rewrite" url="https://www.xiangcaowuyu.net/" appendQueryString="false"/>  
    </rule>  
  </rules>  
</rewrite>  
using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt"))  
            using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.xml"))  
            {  
                var options = new RewriteOptions()  
                                //.AddRedirect("index1/(.*)","https://www.xiangcaowuyu.net/",301)  
                                .AddIISUrlRewrite(iisUrlRewriteStreamReader)  
                                .Add(RewriteMapSegment;  
                                //.AddRewrite(@"^index1/(\d+)", "https://www.xiangcaowuyu.net/", skipRemainingRules: true);  
                app.UseRewriter(options);  
            }   
asp.netasp.net core
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

香草物语

本文链接:

https://www.xiangcaowuyu.net/java/in-the-core-asp-net-url-rewrite-and-redirection.html(转载时请注明本文出处及文章链接)

评论 (0)
  1. perry 闲逛
    MacOS · Safari

    怎么看不了啊

    2018-07-11 回复
  2. qzqzqzqz 闲逛
    MacOS · Safari

    快点审核 啊

    2018-01-19 回复