普通web項目和springboot項目的URLrewrite講解

seo建站優化之URLrewrite

前言:    

UrlRewrite就是我們通常說的地址重寫,用戶得到的全部都是經過處理後的URL地址。

**

01

**

一:提高安全性,可以有效的避免一些參數名、ID等完全暴露在用戶面前,如果用戶隨便亂輸的話,不符合規則的話直接會返回個404或錯誤頁面,這比直接返回500或一大堆服務器錯誤信息要好的多

二:美化URL,去除了那些比如*.do之類的後綴名、長長的參數串等,可以自己組織精簡更能反映訪問模塊內容的URL

三:更有利於搜索引擎的收入,通過對URL的一些優化,可以使搜索引擎更好的識別與收錄網站的信息

四:可以很方便的重用,提高網站的移植性。如果我們後臺方法改動的話,可以保證前臺的頁面部分不用改。這樣就提高了網站的移植性。

缺點: 因爲它是通過過濾器原理來實現的,就意味着又多了一道訪問,會多少影響點訪問速度的,這個可以忽略不計的。

使用範圍

地址重寫一般是用於將動態地址僞靜態。如果本身就是靜態就沒必要了。地址重寫後網站製作者可以通過輸入地址名直接訪問。

02

使用方法

第一步:添加maven依賴或下載urlrewritefilter.jar直接到你的 web - inf / lib 目錄中。

maven依賴:

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

ps:如果你直接複製到的pom.xml,可能會報這個錯

pom.xml mvn package expected START_TAG or END_TAG not TEXT

解決辦法:

https://applyset.xyz/34.html

下載jar

官方地址:http://tuckey.org/urlrewrite/
下載urlrewritefilter-4.0.3.jar,加入到工程lib目錄下。

第二步:在web.xml中加入如下配置,進行初始化:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

第三步:在WEB-INF目錄下建一個urlrewrite.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
       "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
<urlrewrite>
    <rule>
        <!--攔截頁面以xxx開頭的數據,作爲轉發給前端使用,以^開頭$結束-->
        <from>^xxx$</from>
        <!-- to: 真實的URL -->
        <to></to>
    </rule>
    <!-- 上一個<rule></rule>爲示例 -->
     <rule>
       <from>^/vweb/view/index\-([0-9]+)$</from>
       <to>/vweb/view/index.shtml?_vwebid=$1&amp;type=show</to>
   </rule>
</urlrewrite>

簡單的介紹一下常用的正則表達式:
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束

常用的&要用 &來表示。$1,$2代表與你配置正規表達式/(\w+)/(\w+)/相對應的參數。

中的type有兩個值,默認的是 type=“forward”.連接外部的網站時用type=“redirect”。

<rule>  

    <from>^/rss/yahoo\.html$</from>  

      <to type="redirect">http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed[/url]

     </to>  

</rule>  

**

03

**

**

springboot項目配置urlrewriteFilter

**

這第一步好像沒什麼好說的,使用urlrewriteFilter自然要引入依賴的jar包.(前文已經說到,這裏不做贅述)

第二步,配置過濾器

package com.llf.springboot.controller;

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);
        }
    }
}

附:網上關於springboot的過濾器的寫法大概有三類,感興趣的可自行百度,這裏就不提供了

特別需要注意的是:

confPath的作用是,指定URLRewrite配置文件的位置,默認在WEB-INF下,但是我使用的內嵌式的服務器,所以是沒有這個目錄的,爲了解決這個問題,

我可是翻了不少的地方,直接寫配置文件名稱,表示該文件在類加載路徑下.如果你是maven構建的項目,那就是resource下.

在這裏插入圖片描述

這個也比較好理解的.

但是有一點需要注意的是,如果打的不是war包而是jar包的話,那麼指定confPath參數是沒有作用的,因爲它讀取不到你的配置文件.

配置urlrewrite.xml

同上

這裏可以添加多條攔截規則,每一條攔截規則使用rule標籤包裹.

這裏沒有特別需要注意的地方.

如果只是簡單的使用的話,記住下面這一點就足夠了.

首先,如果你會用正則表達式的話,可以通過正則表達式來處理,如果不會,可以使用通配符.

<from>^/(\w+)/_([\w\d])+\.html$</from>
<!-- to: 真實的URL -->
<to type="forward">/$1.html?param=$2</to>

控制檯出現以下信息表示加載成功
在這裏插入圖片描述

效果預覽圖
在這裏插入圖片描述

個人博客:知兮寒兮
技術交流羣:752561537
微信掃一掃關注該公衆號獲取更多資料
在這裏插入圖片描述
個人小程序:知兮寒兮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章