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);
}
怎么看不了啊
快点审核 啊