关于urlrewrite

urlrewrite使用强大的自定义规则来使用用户更容易记住、搜索引擎更容易找到的URL(对于seo比较重要)。通过使用规则模板、重写映射,Web管理员可以轻松地设置规则,根据HTTP标头、HTTP响应或请求标头、变量,甚至复杂的编程规则来定义URL重写行为。此外,Web管理员可以根据重写规则中表示的逻辑进行url重定向、发送自定义响应或停止HTTP请求。

为何有这篇教程

百度上查询urlrewrite这个工具包的使用教程时,网上并没有springboot整合的完整示例,于是就自己摸索的写了一下。

开始:

1.引入maven依赖:

<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.4</version>
</dependency>

2.重写UrlRewriteFilter的过滤器加载urlrewrite.xml规则,urlrewrite.xml放在 resources文件夹下

package webapp.conf;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.tuckey.web.filters.urlrewrite.Conf;
import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter; import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import java.io.IOException; @Configuration
public class UrlRewriteConf extends UrlRewriteFilter {
private static final String URL_REWRITE = "classpath:/urlrewrite.xml"; //注入urlrewrite配置文件
@Value(URL_REWRITE)
private Resource resource; //重写配置文件加载方式
protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException {
try {
//将Resource对象转换成Conf对象
Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(), "@@traceability@@");
checkConf(conf);
} catch (IOException ex) {
throw new ServletException("Unable to load URL rewrite configuration file from " + URL_REWRITE, ex);
}
}
}

3.urlrewrite.xml文件配置,urlrewrite.xml规则示例:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
<rule>
<name>seo redirect 301</name>
<condition name="host">^9191boke.com$</condition>
<from>^/(.*)</from>
<to type="permanent-redirect" last="true">http://www.9191boke.com/$1</to>
</rule>
<rule>
<name>seo redirect 301</name>
<condition name="host">^localhost:9191$</condition>
<from>^/(.*)</from>
<to type="permanent-redirect" last="true">http://www.localhost:9191/$1</to>
</rule>
<rule>
<from>^/([0-9]+).html$</from>
<to>/blogdetails/$1.html</to>
</rule>
<rule>
<from>^/p_([0-9]+).html$</from>
<to>/?page=$1</to>
</rule>
</urlrewrite>

from标签内的表示匹配的模式,<to>标签内的是想要转换的模式。

<rule>

<name>seo redirect 301</name>

<condition name="host">^9191boke.com$</condition>

<from>^/(.*)</from>

<to type="permanent-redirect" last="true">http://www.9191boke.com/$1</to>

</rule>

以上为域名301重定向,所有http(s)://9191boke.com/xxx链接会重定向至http://www.9191boke.com/xxx

<from>^/([0-9]+).html$</from>

<to>/blogdetails/$1.html</to>

^/([0-9]+).html$表示http://xxx/数字.html会发送实际请求为http://xxx/blogdetails/数字.html

<rule>

<from>^/p_([0-9]+).html$</from>

<to>/?page=$1</to>

</rule>

^/p_([0-9]+).html$表示http://xxx/p_数字.html会发送实际请求为http://xxx/?page=数字.html

每一条拦截规则使用rule标签包裹。

这里没有特别需要注意的地方,如果只是简单的使用的话,记住下面这一点就足够了。

如果你会用正则表达式的话,可以通过正则表达式来处理(推荐使用),如果不会,可以使用通配符。

springboot中配置urlrewrite实现url伪静态强化网站seo的更多相关文章

  1. 在SpringBoot中配置aop

    前言 aop作为spring的一个强大的功能经常被使用,aop的应用场景有很多,但是实际的应用还是需要根据实际的业务来进行实现.这里就以打印日志作为例子,在SpringBoot中配置aop 已经加入我 ...

  2. springboot中配置主从redis

    测试redis的主从配置 redis实例 文件夹名称如下 redis_master_s redis_slaver1_s redis_slaver2_s redis.conf文件 master的redi ...

  3. SpringBoot(八):SpringBoot中配置字符编码 Springboot中文乱码处理

    SpringBoot中配置字符编码一共有两种方式 方式一: 使用传统的Spring提供的字符编码过滤器(和第二种比较,此方式复杂,由于时间原因这里先不介绍了,后续补上) 方式二(推荐使用) 在appl ...

  4. 在SpringBoot中配置定时任务

    前言 之前在spring中使用过定时任务,使用注解的方式配置很方便,在SpringBoot中的配置基本相同,只是原来在spring中的xml文件的一些配置需要改变,在SpringBoot中也非常简单. ...

  5. springboot中配置过滤器以及可能出现的问题

    在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加c ...

  6. Mybatis源码解读-SpringBoot中配置加载和Mapper的生成

    本文mybatis-spring-boot探讨在springboot工程中mybatis相关对象的注册与加载. 建议先了解mybatis在spring中的使用和springboot自动装载机制,再看此 ...

  7. Maven 中配置 Urlrewrite 基本配置

    1. 在maven项目的pom.xml文件里加入: <!-- URL Rewrite --> <dependency> <groupId>org.tuckey< ...

  8. SpringBoot中配置起动时的数据库初始化角本

    一.简介 我们使用SpringBoot + JPA时,需要程序在启动时执行数据表的初始化或者数据库记录的初始化.一般数据表的初始化可以通过在Spring Boot的application.proper ...

  9. springboot中配置tomcat的access log

    在tomcat的access中打印出请求的情况可以帮助我们分析问题,通常比较关注的有访问IP.线程号.访问url.返回状态码.访问时间.持续时间. 在Spring boot中使用了内嵌的tomcat, ...

随机推荐

  1. Nexus 私服上传文件,并通过 Gradle 引用

    一.上传文件到 Nexus 1,进入 Nexus 仓库界面 如果你电脑还没有使用 Nexus,需要先下载并启动 Nexus 私服. 在浏览器输入:http://127.0.0.1:8081/nexus ...

  2. Gym101002E:K-Inversions

    \(Gym101002E:K-Inversions\) 题意描述: 题目连接链接 给定一个长度为\(N\)只包含\(AB\)的字符串,某个\(A\)的位置为\(j\),某个\(B\)的位置为\(i\) ...

  3. Debian 9 部分快捷键失效问题

    教程 具体修复过程: 安装gnome-screensaver包,重启恢复正常.

  4. MySQL实战45讲学习笔记:第二十一讲

    一.引子 在上一篇文章中,我和你介绍了间隙锁和 next-key lock 的概念,但是并没有说明加锁规则.间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上 ...

  5. Spring IOC小记

    1. What IOC (Inversion Of Control,控制反转)与DI(Dependency Injecion,依赖注入) 用于对象间解耦,如在以前若对象A依赖B则需要在A中负责B的创建 ...

  6. [LeetCode] 923. 3Sum With Multiplicity 三数之和的多种情况

    Given an integer array A, and an integer target, return the number of tuples i, j, k  such that i &l ...

  7. [LeetCode] 78. Subsets 子集合

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  8. cmd常见错误及解决方法

    [英文] Bad command or file name [译文] 错误的命令或文件名 错误原因和解决: 这大概是大家最常见到的错误提示了,它的意思是输入的命令无效.当输入的命令既不是DOS内部命令 ...

  9. java跳出循环break;return;continue使用

    for(int i=0;i<5;i++){ if(i==2){ System.out.println("i==2时忽略了"); continue;//忽略i==2时的循环 } ...

  10. python--unittest测试框架

    unittest中最核心的四个概念是:test case, test suite, test runner, test fixture