使用Url Rewrite进行URL重写(实现网站伪静态)

news/2024/5/14 5:34:19/文章来源:https://blog.csdn.net/lishuai05251986/article/details/84805571

有些项目需要隐藏请求地址的后缀,比如Struts的请求地址通常写成xxxx.action\xxxx.do结尾,现在想把。action\.do去掉,改为.html或其他(login.action ---> login.html同样可以进行数据请求,实际上还是调用原来的地址

为什么要用URL重写:

主要原因是为了搜索引擎更容易找到,大部分搜索引擎都优先考虑收录静态的HTML页面,而不是动态的*.jsp、*.php页面,但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上的大部分网站都会考虑使用伪静态——就是将*.jsp*.php这种动态URL伪装成静态的HTML页面。

步骤1:下载Url Rewrite Filter 3.2.0 (官网:http://tuckey.org/urlrewrite/)

步骤2:拷贝jar文件

解压urlrewrite-3.2.0-src.rar,(如果是单独的测试工程,则需要拷贝urlrewrite-3.2.0-src/lib下的所有依赖的jar包),拷贝urlrewrite-3.2.0-src\webapp\WEB-INF\lib里的urlrewrite-3.2.0.jar到你的Web工程的WEB-INF\lib目录下

步骤3:配置web.xml 文件

在web.xml文件中添加如下配置代码:

  1: <!-- 配置UrlRewrite核心过滤器 -->
  2: <filter>
  3:     <filter-name>UrlRewriteFilter</filter-name>
  4:     <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  5: </filter>
  6: <filter-mapping>
  7:     <filter-name>UrlRewriteFilter</filter-name>
  8:     <url-pattern>/*</url-pattern>
  9:     <dispatcher>REQUEST</dispatcher>
 10:     <dispatcher>FORWARD</dispatcher>
 11: </filter-mapping>
 12: 

这段配置代码可以在urlrewrite的文档中找到:urlrewrite-3.2.0-src\manual\index.html

步骤4:编写urlrewrite.xml配置文件

拷贝urlrewrite-3.2.0-src\webapp\WEB-INF\urlrewrite.xml

标签说明:

<rule>:URL重写规则

<form>: 拦截请求的URL (写正则表达式)

<to> : 真实的URL

示例:

  1: <?xml version="1.0" encoding="utf-8"?>
  2: <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
  3:     "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
  4: 
  5: <!--
  6: 
  7: Configuration file for UrlRewriteFilter
  8: http://tuckey.org/urlrewrite/
  9: 
 10: -->
 11: <urlrewrite>
 12: <!-- rule: URL重写规则 -->
 13: <rule>
 14:     <!-- from: 拦截请求的URL (写正则表达式)
 15:         http://localhost:8080/hrm/
 16:     -->
 17:     <from>^/$</from>
 18:     <!-- to: 真实的URL -->
 19:     <to type="forward">/main.action</to>
 20: </rule>
 21: 
 22: <rule>
 23:     <!-- FrameSet请求的地址/left.html、/top.html -->
 24:     <from>^/(\w+)\.html$</from>
 25:     <to>/$1.action</to>
 26: </rule>
 27: 
 28: <!-- 模块级别的URL重写规则 -->
 29: <rule>
 30:     <!-- /document/selectDocument.html -->
 31:     <from>^/(\w+)/(\w+)\.html$</from>
 32:     <!-- /document/selectDocument.action -->
 33:     <to>/$1/$2.action</to>
 34: </rule>
 35: 
 36: <!-- 分页的URL重写规则 -->
 37: <rule>
 38:     <!--/notice/selectNotice/2.html -->
 39:     <from>^/(\w+)/(\w+)/([0-9]+)\.html$</from>
 40:     <!--/notice/selectNotice.action?pageModel.pageIndex=2 -->
 41:     <to>/$1/$2.action?pageModel.pageIndex=$3</to>
 42: </rule>
 43: </urlrewrite>
 44: 
 45: 

上面分别演示了几种请求地址的重写方式,<to>中隐射真实的地址,其中“$1”"$2”等对应<form>里面正则表达式段

image

如果你的工程里还用了其他框架进行了请求的拦截,比如Struts2,则要在<filter-mapping>里配置

<dispatcher>REQUEST</dispatcher>

<dispatcher>FORWORD</dispatcher>

  1: <!-- 配置Struts2核心过滤器 -->
  2: <filter>
  3:     <filter-name>struts</filter-name>
  4:     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5: </filter>
  6: <filter-mapping>
  7:     <filter-name>struts</filter-name>
  8:     <url-pattern>*.action</url-pattern>
  9:     <dispatcher>REQUEST</dispatcher>
 10:     <dispatcher>FORWARD</dispatcher>
 11: </filter-mapping>
 12: 

步骤5:改写原来的求情地址,改为.html结尾(随便上面结尾都行,你喜欢的话.jaxp .asp都可以)

再把原来jsp页面里的xxx.action改为xxxx.html,示例

  1: <frameset rows="80,*" cols="*" frameborder="no" border="0" framespacing="0">
  2:   <frame src="${pageContext.request.contextPath}/top.html" name="title" scrolling="no" noresize="noresize">
  3:   <frameset cols="220,*" frameborder="no" border="0" framespacing="0">
  4:     <frame src="${pageContext.request.contextPath}/left.html" name="tree" scrolling="no" marginheight="0" marginwidth="0">
  5:     <frame src="${pageContext.request.contextPath}/right.html" name="main" scrolling="yes" frameborder="0" marginwidth="0" marginheight="0" noresize="noresize">
  6:   </frameset>
  7: </frameset>

上面把/top.action改成了/top.html,这里采用的是FORWORD跳转,地址栏看不到请求后的地址,即原来是这样的http://localhost:8080/hrm(项目名称)/会到主页面main.actin,在经过URL重写后转发,就看不到跳转后的请求main.action了,直接就是http://localhsot:8080/hrm/

在请求/left.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_796608.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让界面动起来!移动动效设计必备灵感网站

扁平化的兴起&#xff0c;现在越来越流行动效设计&#xff0c;特别对于移动端&#xff0c;对交互动效要求是很高的&#xff0c;今天为大家整理一些以展示动效为主的网站&#xff0c;对交互设计师来说是很好的灵感发源地。 相关推荐《10个启发交互设计师灵感的UI设计网站和CSS动…

linux云服务器搭建流程_搭建个人网站

搞了一上午&#xff0c;查了好多博客&#xff0c;谁让我是菜鸟呢&#xff0c;上干货。。。。。。。。。。。。。。。。。&#xff08;教程虽然详细&#xff0c;但环视遇到不少问题&#xff0c;大家有问题可以留言&#xff0c;一定回复&#xff09; 仅且用于学习&#xff0c;如…

php网站模板怎么打开,windows系统,PHP为5.4,网站模板上传后要怎么设置才能打开?...

夏日小时光回答数&#xff1a;106 | 被采纳数&#xff1a;562017-08-11 16:58:141,在win7下apache需要指定libeay32.dll和ssleay32.dll的位置&#xff0c;因为php_curl扩展依赖这2个动态链接库&#xff0c;于是乎打开httpd.conf加入2行配置&#xff1a;LoadFile "这里改…

手把手搭建SpringBoot电子商城网站【附源码】(毕设)

文末源码加视频教学 &#x1f680;&#x1f680;100个精品实战案例&#xff1a; &#x1f680; https://blog.csdn.net/qq_40374604/category_11788364.html &#x1f680; 一、项目简介 ​ 【电子商城网站】&#xff0c;基于SpringBoot电子商城网站 二、技术实现 IOC容器&am…

404错误的处理方式及对SEO的影响

在“通过HTTP状态码查看搜索引擎蜘蛛如何爬行你的网站”一文中&#xff0c;我介绍了一些经常涉及到的HTTP状态码及含义&#xff0c;譬如大家经常探讨并且与本文相关的Http状态码&#xff1a;404&#xff1a;服务器找不到指定的资源&#xff0c;请求的网页不存在(譬如浏览器请求…

基于 Gitee 搭建个人网站-入门教程

免费开源项目&#xff0c;震撼上线&#xff0c;提供完整文档&#xff0c;欢迎各位股东&#xff1a;SpringBootVUE https://gitee.com/rodert/liawan-vue 前言 这是一篇基于Gitee搭建个人网站的保姆级教程。从零到一。如果你想基于云服务器搭建&#xff0c;我以前写过一篇菜鸟…

我的网站正式上线了

宣布一件重要的事情&#xff0c;经过各方努力&#xff0c;我的网站正式上线&#xff01; 文末阅读原文&#xff0c;各位股东先一睹为快 http://javapub.net.cn/ 最重要一点 是通过了国家工业和信息化部的审核 注意,打码完全是出于对大家的爱. 第一点 最开始一版是这样&am…

《大型网站技术架构:核心原理与案例分析》读书笔记

写在前面&#xff1a;本书出版于2013年&#xff0c;鄙人工作第三年&#xff0c;此时&#xff08;2018年9月底&#xff09;看完此书&#xff0c;感觉收获并不多&#xff0c;并没有网上传闻那么牛逼&#xff0c;勉强6分&#xff08;满分10&#xff09;&#xff0c;只能算是网站架…

《大型网站系统与java中间件实践》读书笔记

As always&#xff0c;福利置顶&#xff0c;pdf下载链接&#xff1a;http://pan.baidu.com/s/1boE2xBp 密码&#xff1a;iu6o 书籍还算不错&#xff0c;把分布式系统各种可能的问题都细致地分析一遍&#xff0c;并给出几种解决方法和最佳的方案&#xff0c;这一点值得肯定。分布…

订餐网站2(后台界面)

因为后台不要求美观所以开始做后台界面给管理员用。需要的功能&#xff1a; 1. 登录页面 ->单独页面&#xff0c;aspx直接登录&#xff0c;成功转入管理页面 2. 管理员查看&#xff0c;处理订单 ->管理页面 3. 管理员修改菜品 ->管理页面 4. 管理员管理会员 ->…

订餐网站3(数据库设计)

由于网站比较小所以使用Access数据库&#xff0c; 表设计之后如下图&#xff0c;用Mindjet MindManager画的

订餐网站4(管理界面-dishes.aspx)

管理菜品的界面 1. 添加菜品通过 table中添加input text box实现 <asp:TableRow runat"server"> <asp:TableCell runat"server">菜品名称</asp:TableCell> <asp:TableCell runat"server">菜品介绍</asp:TableCell&…

jmeter模拟对网站做压力测试

一般的网站&#xff0c;在进入业务功能前先需登录&#xff0c;然后才能访问业务功能。基本框架如下 详细步骤&#xff1a; 1 .用badboy录制登录&#xff0c;访问随意一个网址。 2.用jmeter打开&#xff0c;一会自己写的时候可以参考里面的参数名称或路径什么的。如果对http熟悉…

Fiddler是最强大最好用的Web调试工具之一--网站抓包分析

Fiddler 教程 Fiddler是最强大最好用的Web调试工具之一&#xff0c;它能记录所有客户端和服务器的http和https请求&#xff0c;允许你监视&#xff0c;设置断点&#xff0c;甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说&#xff0c;都有很大的帮助。 阅读目录 Fid…

centos6下如何安装mysql服务_centos 6.5如何安装mysql?_网站服务器运行维护,centos 6.5,mysql...

Linux运维之shell变量.md_网站服务器运行维护我们知道shell里面有许多变量&#xff0c;比如我们经常会用到的PATH变量&#xff0c;它的作用就是&#xff0c;它的作用是设置可执行文件的目录&#xff0c;这样输入命令的时候就不用使用绝对路径了。centos 6.5安装mysql的方法&…

php网站开发实例教程源码,PHP+MYSQL网站开发全程实例

1. 从观念的引述、程序代码解析到范例的延伸应用&#xff0c;给您最完整的学习流程。2. 实务网站范例&#xff0c;所有技术整合运用&#xff0c;实作技巧一览无遗。3.在PHP的程序设计中&#xff0c;以高阶的程序设计&#xff0c;配上灵活的图解&#xff0c;增加您程序设计的功力…

项目1在线交流平台-7.构建安全高效的企业服务-5.redis高级数据结构应用-统计网站数据-独立访客和日活跃用户

文章目录功能需求一、dao层定义redis数据的key二、Service层处理业务逻辑1. 对独立访客UV的记录与查询记录new SimpleDateFormat("yyyyMMdd")format(new Date())- 日期类型转为指定日期格式字符串类型查询Calendar类 Calendar.getInstance()- 实例化操作日期的Calend…

打不开_网站打不开的原因有哪些

其实网站不管是在建设的过程中还是在投入运营使用之后&#xff0c;都会出现网站打不开的现象&#xff0c;而且还有很多的企业不知道出现这种现象的原因。今天八爪网就给大家分享网站打不开的原因有哪些&#xff0c;一起来看看吧。1、检查是否是网站服务器的问题有的企业在做网站…

使用Web标准建站第8天:CSS布局入门(2)

接下来开始要真正设计布局了。和传统的方法一样&#xff0c;你首先要在脑海里有大致的轮廓构想&#xff0c;然后用photoshop把它画出来。你可能看到有关web标准的站点大都很朴素&#xff0c;因为web标准更关注结构和内容&#xff0c;实际上它与网页的美观没有根本冲突&#xff…

java webmagic 使用_使用 | Java使用WebMagic 爬取网站

小小又开始学习了&#xff0c;这次跟着项目学习着&#xff0c;需要使用一个相关的爬虫&#xff0c;这里使用的是webmagic作为网站的爬虫。安装这里使用maven进行安装。根据maven下载相关的包us.codecraftwebmagic-core0.7.3us.codecraftwebmagic-extension0.7.3Hello World几乎…