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

原创 Laughing  2017-09-05 14:43  阅读 290 次 评论 0 条

URL的重写和重定向我们还是比较经常用的,不管我们做301跳转还是防盗链亦或是进行SEO,我们都经常使用到URL的重写或者重定向。我本人也是做ERP的,所以业务系统使用的这些功能相对来说比较少,我也只是参考

进行学习,有不足的地方大家多多指教。

重定向

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

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

  1. var options = new RewriteOptions()  
  2.                             .AddRedirect(@"index/(\d+)""https://www.lisen.me/", 301);  
  3.           app.UseRewriter(options);  

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

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

重写

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

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

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

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

  1. # Rewrite path with additional sub directory  
  2. RewriteRule ^/apache-mod-rules-redirect/(.*) https://www.lisen.me/ [L,R=302]  

然后配置startup.cs,如下

  1. using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt"))  
  2.             using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.txt"))  
  3.             {  
  4.                 var options = new RewriteOptions()  
  5.                                 //.AddRedirect("index1/(.*)","https://www.lisen.me/",301)  
  6.                                 .AddApacheModRewrite(apacheModRewriteStreamReader);  
  7.                                 //.AddRewrite(@"^index1/(\d+)", "https://www.lisen.me/", skipRemainingRules: true);  
  8.                 app.UseRewriter(options);  
  9.             }       

IIS重写

配置文件iisUrlRewrite.xml如下

  1. <rewrite>  
  2.   <rules>  
  3.     <rule name="Rewrite segment to id querystring" stopProcessing="true">  
  4.       <match url="^iis-rules-rewrite/(.*)$" />  
  5.       <action type="Rewrite" url="https://www.lisen.me/" appendQueryString="false"/>  
  6.     </rule>  
  7.   </rules>  
  8. </rewrite>  
  1. using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt"))  
  2.             using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.xml"))  
  3.             {  
  4.                 var options = new RewriteOptions()  
  5.                                 //.AddRedirect("index1/(.*)","https://www.lisen.me/",301)  
  6.                                 .AddIISUrlRewrite(iisUrlRewriteStreamReader)  
  7.                                 .Add(RewriteMapSegment;  
  8.                                 //.AddRewrite(@"^index1/(\d+)", "https://www.lisen.me/", skipRemainingRules: true);  
  9.                 app.UseRewriter(options);  
  10.             }   
本文地址:https://www.lisen.me/in-the-core-asp-net-url-rewrite-and-redirection.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情