urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
使用urlrewrite的步骤如下:
首页,访问其官网:http://tuckey.org/urlrewrite/,我下载的是最新的目前还处于Beta版的urlrewritefilter-3.2.0,下载后将其中的urlrewrite-3.2.0.jar扔到需使用此功能项目的lib目录中去
其次,在web.xml中加入如下配置:
<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>
其实,urlrewrite其实就是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向,具体的配置参数的使用方法见官方文档:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html
配置好web.xml后将下载的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目录下,这样在使用urlrewritefilter时它便自动到该目录下读取相关的配置了,我配置了个简单的,代码如下:
<rule>
<from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from>
<to>/zh_CN/NewsInfo/view.do?method=view&id=$1</to>
</rule>
<outbound-rule>
<from>/zh_CN/NewsInfo.do/?method=view&id=([0-9]+)$</from>
<to>/zh_CN/NewsInfo/NEWS_$1</to>
</outbound-rule>
rule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转,具体配置可见官网文档。
outbound-rule结点是服务器解析后的页面URL对外表现的形式,配置与上面的大体相同,如我一新闻链接代码在JSP中书写的形式如下:
<c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" />
<li>· <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></li>
经服务器解析后,最终显示在页面中的将变成:
<li>· <a href="/项目名/zh_CN/NewsInfo/NEWS_9999" mce_href="项目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新闻标题</a></li>
当用户点击此链接后urlrewrite便用通过rule的配置重跳转到真正的访问地址,这样便很好的隐藏了真实地址
这其中有点是需要注意的,引用官网中的一段话:
写道
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>
Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>
Note, If you are using JSTL (ie, <c:url) this will work also.
意思就是说需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示
分享到:
相关推荐
比如,下面,我要实现这样的URL: http://xxx.com/0725 http://xxx.com/0726 http://xxx.com/0727 … 上面xxx.com是一个记录《今天是》这样的历史内容的一个测试站点。上面链接的意思,就是显示07月25日的历史...
另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...
另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...
1.4 小结 第2章 SEO基础知识 2.1 SEO概述 2.1.1 链接价值 2.1.2 Google PageRank 2.1.3 可用性和可达性 2.2 搜索引擎排名因素 2.2.1 页上因素 2.2.2 可见的页上因素 2.2.3 不可见的页上因素 2.2.4 基于...
另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...
URL重写是Nginx的另一个强大功能,可以使用`rewrite`规则或`try_files`指令实现。例如,如果请求的文件不存在,则重定向到`index.php`处理。对于静态资源和动态内容的分离,Nginx可以通过`proxy_pass`进行反向代理,...
- `--enable-rewrite`: 支持URL重写 - `--enable-ssl`: 支持SSL加密 - `--with-pcre`: 指定PCRE库的路径 - `--with-apr`: 指定APR库的路径 - `--with-apr-util`: 指定APR-UTIL库的路径 - `--enable-modules=...
Apache服务器提供了一种强大的功能——Rewrite模块,它可以通过修改URL规则来达到防盗链的目的。以下是具体实现步骤: 1. **确认Rewrite模块已启用** 在Apache的配置文件`httpd.conf`中,确保Rewrite模块已经被...
#### 小结 通过上述步骤,您可以有效地为IIS服务器配置防盗链功能,从而保护您的网站资源免受未授权访问的影响。需要注意的是,防盗链策略应定期审查和更新,以适应不断变化的安全威胁环境。 以上就是关于IIS防盗...
Apache有许多可选模块,如mod_rewrite用于URL重写,mod_ssl用于HTTPS支持。可以通过`a2enmod`和`a2dismod`命令来启用和禁用模块。 11. **故障排除** 如果遇到问题,可以查看错误日志,使用`tail`命令跟踪实时日志...
您可能感兴趣的文章:Nginx下301重定向域名的方法小结Apache Rewrite实现URL的301跳转和域名跳转比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法IIS7.5下301重定向的设置方法(及伪静态后301重定向出错案例)...
#### 六、小结 本教程通过逐步指引,介绍了如何从零开始搭建基于Zend Framework的应用环境,包括必要的软件安装、框架下载、目录结构配置、Apache服务器配置以及如何加载和使用Zend Framework的关键组件。通过实践...
打开服务器的asp.net页面时出现这个错误: ...无法访问请求的页面,因为该页的相关配置数据无效。... 您可能感兴趣的文章:Nginx下301重定向域名的方法小结Apache Rewrite实现URL的301跳转和域名跳转比
**小结**: 尽管上述文件中提到对cakephp的认识可能存在偏差,但所提供的知识点仍然反映了cakephp的基本使用方法和一些关键特性。cakephp的初学者可以通过上述流程和组件的了解,开始构建自己的应用程序。不过,随着...