关于URL 重写如何实现的问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于URL 重写如何实现的问题

杨冬芳 2016-06-14 11:36:35 1045

关于URL重写,Apache上的URL Rewriting Guide是一个该功能的介绍,全是英文的,看着费劲,大伙谁能通俗易懂的说说怎么实现我的网站的URL重置功能,或者给个中文的参考说明也可。

项目是建立在J2EE的一个JSP网站。

开发工具是Eclipse。

开发框架 Java Apache 开发工具 Android开发
分享到
取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:37:07

    我用的开发框架是Struts2,使用urlrewrite的步骤是先引入相关的包,
    然后在web.xml中使用如下配置.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <!-- 这是UrlRewrite的配置 -->
            <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>
        </filter-mapping>
            <!--结束-->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>
                org.apache.struts2.dispatcher.FilterDispatcher
            </filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
                    <!--重要-->
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    下面是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">
    
    <!--
    
        Configuration file for UrlRewriteFilter
        http://tuckey.org/urlrewrite/
    
    -->
    <urlrewrite>
       <!--以index为例-->
        <rule>
            <from>/index</from><!-- 地址栏里会显示http://localhost:8080/工程名/index -->
            <to>/index.action</to><!-- 实际调用的是index.action -->
        </rule>
        <rule>
            <from>/admin</from>
            <to>/blog/admin.jsp</to><!--实际访问的为admin.jsp-->
        </rule>
        <!--网址中有变量的时候-->
        <rule>
            <from>/index/([\s\S]*)$</from><!--以$代替变量,变量支持正则表达式-->
            <to>/index.action?param=$1</to><!--用$1调用变量-->
        </rule>
        <!--网址中有多个变量的时候-->
        <rule>
            <from>/essay/([\s\S]*)/([\s\S]*)$</from><!--多个变量用‘/’分割-->
            <to>/main.action?date=$1&amp;id=$2</to><!--变量与变量之间用‘&amp;’连接,重要-->
        </rule>
        <!--以下不用管-->
        <outbound-rule>
            <from>/rewrite-status</from>
            <to>/test/status/</to>
        </outbound-rule>
    
    </urlrewrite>

    希望对你有帮助.

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题