urlrewrite 地址重写
环境:
Maven 3.0.4
Urlrewrite 2.5.2
Myeclipse 8.6.1
借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可以略过创建过程。
创建一个 Maven Project:New --> Other --> Maven Project
在弹出的对话框里,如果你想修改你项目的存放路径你可以改一下,其他的默认,我的所有项目都是存放在默认的工作区下,所以直接点NEXT
接下来找到并选择webapp,其他的默认,NEXT
填写你的 groupId、artifactId、version 和 package 信息,然后 Finish
(Finish 之后myeclipse在创建maven的时候可能会弹出错误框提示,没事,不用管它,直接按两次回车或手动关闭提示框)
下面我简单解释一下 groupId、artifactId、version 和 package:
groupId:group 翻译成中文就是组、集团的意识,groupId就是这样一个组或集团的ID标识,就拿 Apache 来说好了,Apache 大家都不陌生吧,
Apache 官网上有非常多的项目,每个项目里面肯定能找得到 org.apache.xxxx,而 org.apache 就是这里说的 groupId
artifactId:还是拿 Apache 来说,Apache 官网上有非常多的项目,而每个项目的名字就是这里的 artifactId,换句话说,artifactId 就是你的项目名
version:这个就没有什么好解释的了吧,是项目版本的意思
package:这个也没什么好说的,就是 groupId.artifactId,创建的时候会自动帮你补全,如果没有自动帮你补全就自己手动敲上去
好,下面来看创建出来的urlrewrite-maven-example的目录结构:
src/main/resources:用来存放资源文件(默认会帮你创建这个资源文件夹)
src/main/java:用来存放 java 源码文件(需要自己手动创建)
src/main/test:用来存放测试代码(需要自己手动创建,也有人习惯命名为:src/test)
target:是用来存放 Maven 编译好的字节码的地方
Maven 的创建就讲到这,接着讲 urlrewrite,另外为了调试方便我引进了 Ant,即上面的 build.xml,这里我不讲它,没有影响。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.fancy</groupId> <artifactId>urlrewrite-maven-example</artifactId> <packaging>war</packaging> <version>1.0</version> <name>urlrewrite-maven-example Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <!-- urlrewrite jar --> <dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewrite</artifactId> <version>2.5.2</version> </dependency> </dependencies> <build> <finalName>urlrewrite-maven-example</finalName> </build> </project>
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> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <!-- 404错误 --> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <!-- 500错误 --> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <welcome-file-list> <welcome-file>welcome.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" "\\urlrewrite3.2.dtd"> <urlrewrite> <rule> <note>重写index.jsp成index.html</note> <note>example:/index.html</note> <from>/index.html</from> <to type="forward">/index.jsp</to> </rule> <rule> <note>将view根目录下所有jsp资源重写成/xxx.action</note> <note>example:/index.action</note> <from>/([A-Za-z0-9]+).action</from> <to type="forward">/view/$1.jsp</to> </rule> <rule> <note>forward(转发模式)传参</note> <note>example:/user/param/fancy/8080.do</note> <from>/user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from> <to type="forward">/view/parameter/$1.jsp?username=$2&password=$3</to> </rule> <rule> <note>redirect(重定向模式)传参,to中写绝对地址</note> <note>example:/admin/param/fancy/8080.do</note> <from>/admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from> <to type="redirect">/urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&password=$3</to> </rule> </urlrewrite>
urlrewrite.xml 这个配置文件一定只能放在 WEB-INF 下,放别的地方,无论你在web.xml中怎么配置都是不行的,至少现在是不行的。
所谓重写,就一定会有规则的匹配,这里用到了正则表达式,方便起见,我只用了[A-Za-z0-9]+,简单的解释一下:
A-Z:匹配 A 到 Z 中的任意一个字符,说一句废话,同理可得,
a-z:匹配 a 到 z 中的任意一个字符
0-9:匹配 0 到 9 的任意一个字符
+:至少出现一次,即,一次或一次以上
合起来 [A-Za-z0-9]+ 的意思就是:匹配一个任意的英文字母和数字组合的字符串
<rule>:自定义匹配规则
<note>:注释,解释标签
<from>:定义具体的匹配规则
<to>:匹配成功后的目标地址
<to type="">:type的值有两个,一个是 forward (转发,参数不丢失),一个是 redirect (重定向,地址栏显示的地址就是目标真实地址)
$1:匹配中的第一个正则表达式的字符串的值,$2,$3,$4....也是如此
& :是 & 的实体名,代表的就是 &,这个可以在 w3school 中找到:http://www.w3school.com.cn/tags/html_ref_entities.html
第一个rule:访问 /index.html,实际上是访问了 /index.jsp
第二个rule:访问 /xx.action , 实际上是访问了 view 目录下的 xx.jsp
第三个rule:访问 /user/xx/yy/zz.do , 实际上是访问了 view 目录下的 parameter 目录下的 xx.jsp?username=yy&password=zz
第四个rule:跟第三个其实是一样的,但是由于是重定向模式,所以地址栏就会显示真的是地址
下面是 测试的 JSP :
/welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/welcome.jsp</h3> <HR/> <p> <a href="index.html" target="_blank">/index.html</a> </p> <p> <a href="index.action" target="_blank">/index.action</a> </p> <p> <a href="user/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(forward[转发模式]) </p> <p> <a href="admin/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(redirect[重定向模式]) </p> </body> </html>
/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/index.jsp</h3> <h1>Hello Urlrewrite</h1> </body> </html>
/view/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/view/index.jsp</h3> <h1>Hello Urlrewrite</h1> </body> </html>
/view/parameter/param.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/view/parameter/param.jsp</h3> <h1>${param}</h1> </body> </html>
Run it :
在 pom.xml 中右键,Run as --> Maven install
下面是生成的 target 资源:
将 war 文件拷贝到你的 服务器中,我用的是tomcat,然后启动tomcat:
如果你是第一次使用 urlrewrite 可能会抛一个异常:
这个异常信息是说系统找不到 tomcat bin 下的 urlrewrite3.2.dtd 文件,解决办法很简单:
方法一:将 urlrewrite3.2.dtd 放到 urlrewrite.xml 所在的目录下,即 WEB-INFO 的目录下
方法二:将 urlrewrite3.2.dtd 放到 tomcat 的 bin 目录下,这个方法一劳永逸,所以我选的是这个
urlrewrite3.2.dtd 这个文件可以在文章的最下面下载,源码包里我没有放这个文件,没问题之后,
访问:http://localhost:8080/urlrewrite-maven-example/ 留意地址栏的地址,你会发现,真实的地址没有被显示出来,你看到的是伪地址:
/index.html
/index.action
/user/param/fancy/8080.do
/user/param/fancy/8080.do , 这次是重定向了,注意留意地址栏地址,这回不再是伪地址了,而是真实的地址
相关推荐
标题“urlrewrite2伪静态与使用文档(IIS)”涉及到的是在IIS(Internet Information Services)服务器环境中,使用urlrewrite2模块实现URL重写和伪静态功能的技术内容。URL重写是Web开发中的一项关键技术,它允许...
《URLRewrite:掌握网页地址重写的关键技术》 URLRewrite是一款强大的URL管理工具,尤其在Java Web应用中广泛使用,它可以帮助开发者实现URL的重写和转换,以达到优化URL、隐藏真实路径、提高SEO效果等目的。在本篇...
### URL重写(UrlRewrite)技术详解 #### 一、引言 URL重写(UrlRewrite)是一种网络服务器功能,它允许开发者通过规则来转换客户端请求的URL,从而达到美化URL、增加安全性以及提高搜索引擎优化(SEO)的效果。在...
1. **安装**:下载并安装IIS URL重写2的扩展,通常是`IIS Urlrewrite2.exe`文件,通过IIS Manager进行安装。 2. **添加规则**:在IIS Manager中选择目标站点,然后在“管理服务”下找到“URL重写”,点击“添加规则...
《URL重写技术详解——基于UrlRewrite工具的实践指南》 在Web开发领域,URL重写是一项重要的技术,它能够使网站的URL更加友好、简洁,提高用户体验,同时也有利于搜索引擎优化(SEO)。本篇文章将围绕“UrlRewrite....
URLRewrite配置和使用 URLRewrite是一种URL重写技术,它可以满足搜索引擎的要求,隐藏技术实现,提高网站的移植性,并满足美感的要求。下面将详细介绍URLRewrite的配置和使用。 1. 满足搜索引擎的要求 搜索引擎对...
UrlRewrite是一个强大的URL管理工具,它主要用于将复杂的URL转换为简单、易记且友好的形式,这个过程被称为URL重写或伪静态处理。在Web开发中,URL重写技术对于提升用户体验、优化搜索引擎排名(SEO)以及维护网站...
什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站页面是 http: www yourdomain com news docread aspx id 123 为什么使用UrlRewrite: 1 处理这样的情形:你要更改你的web应用...
**URLRewrite 3.0.4:优雅的URL管理工具** 在Web开发中,URL的设计和管理对于网站的用户体验和搜索引擎优化(SEO)至关重要。`urlrewrite`是一款优秀的Java库,专门用于处理URL重写,它使得动态网站能够展现静态化...
安装并配置`urlrewrite.jar`后,我们需要在Web应用的`web.xml`配置文件中添加`URLRewriteFilter`,然后编写`urlrewrite.xml`规则文件。配置文件的结构通常包括规则集、条件和规则元素,每个规则定义了匹配URL的模式...
UrlRewrite是一个强大的URL管理工具,常用于ASP.NET应用程序中,它允许开发者通过自定义规则对网站的URL进行重写和转换。这个技术的核心在于提供更友好的、搜索引擎优化(SEO)的URL,同时也可以帮助解决网站迁移或...
在网上找了很多都不合心意,就知道改了下源码,只改了org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.class 文件,如果担心安全的朋友,可以下载 4.0.3的jar 替换UrlRewriteFilter.class即可。 confPath 默认 ...
《深入理解URLRewrite:Java路径重写技术详解》 在Web开发中,URL重写是一种常见的技术,它能够帮助我们优化网站的URL结构,提高搜索引擎优化(SEO),以及实现更加友好的用户界面。本文将重点讲解Java环境下的URL...
urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: <param-name>...
《URL重写技术详解——基于Java的URLrewrite实践》 在Web开发中,URL重写(URL Rewrite)是一项重要的技术,它允许我们以更友好、更可读的方式隐藏实际的URL路径,从而提升用户体验和搜索引擎优化(SEO)。本文将...
IIS URL Rewrite模块是Microsoft为Internet Information Services (IIS) web服务器开发的一个功能强大的URL处理工具。这个模块允许管理员和开发者通过自定义规则来重写和管理网站的URL,从而提高网站的SEO优化、实现...
《深入理解URLRewrite.dll:实现网站优化与伪静态技术》 在Web开发领域,URL重写技术扮演着至关重要的角色,它可以帮助我们优化网站结构,提升用户体验,并对搜索引擎友好。其中,`URLRewrite.dll`是IIS(Internet ...
"iis urlrewrite"标签进一步明确了我们讨论的是与IIS服务器相关的URL重写功能。IIS是微软提供的一个用于Windows操作系统的Web服务器,而URL Rewrite是IIS的一个扩展模块,用于处理和转换HTTP请求的URL。 在压缩包的...
### URLRewrite使用帮助文档 #### 一、URLRewriteFilter简介 URLRewriteFilter是一个功能强大的Web过滤器,主要用于实现URL的改写操作。它能够帮助开发者将动态URL转换成静态URL,这对于提高用户体验、优化SEO...
**URLRewrite组件详解** URLRewrite是一款广泛应用于ASP.NET应用程序中的URL重写工具,它允许开发者通过修改HTTP请求的URL来实现各种功能,如优化SEO(搜索引擎优化)、隐藏内部结构、提供友好的URL以及实现负载...