.Net Core Url重写
在工作中经常会遇到一个控制器实现多个页面内容的效果,在常规做法中,直接用 Controller / Action 访问,这会导致一个问题,就是不利于你网站SEO的。这个时候,我们需要对每一个不同的页面,使用不同的页面路径来访问,这个时候有很多种解决方法,比如说控制器的重载,等等之类,但是最简单的方式是使用URL重写
URL重写可以让用户在访问该链接的时候,服务器收到该链接请求,然后解析,并重写该连接请求,然后返回响应结果,这个过程客户端的访问链接不会进行重载跳转。也就是说客户端的链接不会发生改变,因为这个改变是在服务器内部发生的。
这个时候,我们使用批量重载的时候,就可以使用配置文件,文件规则请去查看Apache官网,里面有详细的介绍。
具体代码我们以.Net Core 3.1框架来展示
具体含义就是,用IO读取Apache配置文件,然后注册重写中间件,把文件注入到Apache的重写中间件中。这样就实现了伪静态路由的实现
env.WebRootPath:这个是获取该站点wwwroot的文件夹路径
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { using (StreamReader apache=new StreamReader($"{env.WebRootPath}/ApacheModRewrite.txt")) { var option = new RewriteOptions().AddApacheModRewrite(apache); app.UseRewriter(option); } }
这是
ApacheModRewrite.txt的文件内容,照着写就行了。具体含义看Apache官网
RewriteEngine on RewriteRule "^/folomi[.]html$" "/Home/Index"