springboot中url地址重写(urlwrite)

在日常网站访问中,会把动态地址改造成伪静态地址。

例如: 访问新闻栏目 /col/1/,这是原有地址,如果这样访问,不利于搜索引擎检索收录,同时安全性也不是很好。

改造之后:

/col/1.html。

改造方法:

1.添加urlrewritefilter

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

2.配置bean

import java.io.IOException;

import javax.servlet.FilterConfig;
import javax.servlet.ServletException;

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;

@Configuration
public class UrlRewriteFilterConfig extends UrlRewriteFilter {

  private static final String URL_REWRITE = "classpath:/urlrewrite.xml";

  // Inject the Resource from the given location
  @Value(URL_REWRITE)
  private Resource resource;

  // Override the loadUrlRewriter method, and write your own implementation
  protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException {
    try {
      // Create a UrlRewrite Conf object with the injected resource
      Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(),
          "@@[email protected]@");
      checkConf(conf);
    } catch (IOException ex) {
      throw new ServletException("Unable to load URL rewrite configuration file from " + URL_REWRITE, ex);
    }
  }
}

参考网址:http://blog.jdriven.com/2016/02/urlrewritefilter-load-configuration-with-spring-resourceloader/

3.配置urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>

    <!-- 栏目首页 -->
    <rule>
        <from>^/col/(\w+)\.html$</from>
        <to>/col/$1/</to>
    </rule>

    <!-- 栏目列表页,注意html后面没有加$,因为后面还有若干参数 -->
    <rule>
        <from>^/col/list/(\w+)/(\w+)\.html</from>
        <to>/col/list/$1/$2/</to>
    </rule>

    <!-- 文章详情页 -->
    <rule>
        <from>^/art/(\w+)\.html$</from>
        <to>/art/$1/</to>
    </rule>

    <!-- 静态网页 -->
    <rule>
        <from>^/static/(\w+)\.html$</from>
        <to>/static/$1/</to>
    </rule>

</urlrewrite>

配置说明请参考:http://blog.163.com/zhangmihuo_2007/blog/static/27011075201351433716225/

至此配置完毕,启动测试,注意看红框处,说明加载了urlwrite。

访问页面如下,成功了!

时间: 2024-11-10 06:44:54

springboot中url地址重写(urlwrite)的相关文章

URL地址重写例子(Helicon)

# Helicon ISAPI_Rewrite configuration file# Version 3.1.0.86 #RewriteEngine on RewriteRule ^/esf/.+(/.+){4,}$ /404.aspx?$0RewriteRule ^/esf/attn_1$ /esf/qh1/ [NC,R=301]RewriteRule ^/esf/attn_1_sid_0$ /esf/qh1/ [NC,R=301]RewriteRule ^/zuf/attn_1$ /zuf

web工程中URL地址的写法

在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开发中是要禁用的.至于相对资源路径和相对根路径用哪个的问题,笔者推荐用相对根路径,相对资源路径容易引起混乱.笔者建议在web开发中通通使用相对根路径,即通通以"/"开头写URL地址.因为这样我们只需弄清楚"/"代表谁即可.可以简单的理解为"/"是给谁用

URL地址重写

现在大部分的网站和商城都会使用到URL重写,接触到这个,也是因为正在做的电子商务商城.URL重写,是将原有的URL采用另一种规则来显示,使得用户方便访问同时也屏蔽一些信息. 在此说下它的好处,在开发过程中,经常会遇到一些带了一大堆参数的URL,这样子,一方面显得烦乱,另一方面,一些信息直接显示在URL上,会有些安全性问题.使用URL重写,可以使带有参数的URL以一种较规则的方式体现,如: /demoAction?id=1            ==>            /demo1.html

web工程中URL地址的推荐写法

在Javaweb开发中,只要写URL地址,建议以“/”开头,也就是使用绝对路径的方式. “/”:如果是给服务器的,代表当前的web工程.给浏览器的,代表webapps目录 代表web工程 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 ②.在服务器端forward到其他页面 1 /** 2 * 2.forward 3 * 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的, 4 * 那么这个"/&qu

YII中URL地址美化

URL地址美化:urlManager地址管理(通过程序来实现url的地址美化) 例如: 原地址:http://localhost/项目/app/index.php?r=控制器/方法 新地址:http://localhost/项目/app/index.php/控制器/方法 ------------------------------- 做法: 修改main.php全局配置文件,开启urlManager功能 /* 'urlManager'=>array( 'urlFormat'=>'path',/

转载:web工程中URL地址的推荐写法

在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录. 1."/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取

springboot中URL带有斜杠的转义字符百分之2F导致的400错误

背景: 今天项目上出现一个问题,是前端的GET请求url中带有路径参数,这个参数中有/这个特殊字符,在postman的url中已经转移成了%2F,后端用的是springboot,并没有收到这个请求,直接返回了400的错误 原因: 据说是tomcat默认是不支持转义的,需要手动设置一下转化,这个搜索tomcat的设置可以找到,但是这个是springboot,有内置的tomcat,但是在yml中找不到相关的配置. 解决方法: 修改一下启动类,加一个系统参数,重写WebMvcConfigurerAda

Nginx 的编译安装和URL地址重写

本文转自:http://www.178linux.com/14119#rd?sukey=ecafc0a7cc4a741b573a095a3eb78af6b4c9116b74d0bbc9844d8fc5e8b50b3fc807541ae53fd06c67ac4f4adaae6981 在此只是做个笔记给自己看的. Nginx专题: 从编译安装到URL重写 前言 环境介绍 Nginx介绍 编译安装Nginx 配置文件解释 main和event{}的配置 http{}的基本配置 配置Nginx 搭建一个

Magento 自定义URL 地址重写 分类分级显示

我们打算将URL在分类页面和产品页面分别定义为: domain.com/category/分类名.html domain.com/category/子分类名.html domain.com/goods/产品名.html 其实实现很简单,无需使用任何扩展程序.操作的前提是,你已经至少建立起一个根分类,一个子分类和一个产品. 1.登陆magento后台,在目录(Catalog)下选择URL重新管理(URL Rewrite Management): 2.在你创建了分类和产品后,应该在这里可以看见sys