伪静态_URLRewrite实例解析
精通MYIIS-URLRewrite(假静态)
精通MYIIS-URLRewrite(假静态)假静态)什么叫URLrewrite呢?它的中文名字叫Url重写(假静态)。
也就是URL改写的意思。
URL的重写之所以得到如此大的应用潜力发挥,主要还是归功于搜索引擎对网站页面的搜索规则推动的。
下面是一个简单的URL地址:http://www.135********.cn/myurl.asp?id=7788520源代码的内容如下:输出的结果也是相当的简单:估计对ASP了解的用户都知道这个程序的含义。
一. 简单的改造我们现在打开VIF ,来到URL 重写栏目。
为这个站增加一个有趣的规则:而实际上在服务器上面 Myurl.htm 是根本不存在的一个文件。
访问看看:关于正则表达式的解释,我们不想过多的去讲解,大家可以去网站上学习一下。
通过上面的例子通过上面的例子,,大家可以发挥自己的想象做出更多的设置来大家可以发挥自己的想象做出更多的设置来。
可以看出可以看出,,如果直接访问myurl.htm 实际是访问了一个带参数的ASP 文件文件。
亮点:试想当你把一个FORM 表单提交给一个HTML 文件来处理,这是多么的牛B 啊。
或者哪天你把这一个FORM 提交给一个TXT 文件,CGI 文件处理的话,不是档次更高了? 二.加入点正则的味道进来上面我们只是玩了一个小把戏,现在我们加入一点正则的东西进来。
看看是不是会为我们增色不少。
现在我们这样修改刚刚的规则:这样的规则是什么呢?按正则的解释就是,凡是类似myurl_123.htm,myurl_333.htm, myurl_39781.htm, myurl_1233.htm……..括号里是数字的文件,都将自动应用到/myurl.asp后面的ID的参数部分,以替换$1这个标记。
规则生效后,我们访问看看:再来看一张:聪明的朋友可能早就看出了这其中的端倪了。
如果你是一个强者,你可以容入更多功能更强大正则表达式。
在软件的正则部分,我们用VC代码开发制作,速度保证第一。
解决ECshop实现URL重写伪静态和全静态
ECshop 2.7.2实现简单URL重写-伪静态及全静态* 一、找到Apache 服务器1、首先您需要找到Apache 安装目录,之后找到conf 目录下的httpd.conf 文件。
2、将下面的代码复制到httpd.conf 文件中,注意将/ecshop 替换为您的商店的实际安装目录。
<Directory /ecshop>Options FollowSymLinksAllowOverride All</Directory>3、在httpd.conf 中搜索LoadModule rewrite_module,将该行前面的# 号删除。
如果您的Apache 是1.3.x版本还需要查找AddModule mod_rewrite.c,请将前面的#删除。
4、保存httpd.conf。
5、将ecshop 目录下的htaccess.txt 重命名为.htaccess。
(windows下用记事本打开然后另存为为.htaccess 。
)6、重新启动Apache。
7、进入ecshop 管理中心->商店设置,将URL 简单重写设置为启用。
如果您想通过httpd.conf 来设置重写规则,请按照下面的步骤操作:1、执行上面第1-3步操作。
2、找到您的商店所在的虚拟主机段,如:DocumentRoot "D:/php/xampp/htdocs"## Each directory to which Apache has access can be configured with respect# to which services and features are allowed and/or disabled in that# directory (and its subdirectories).## First, we configure the "default" to be a very restrictive set of# features.3、将下面的内容加入在此段代码后面。
JavaUrlRewriter伪静态技术运用分析
JavaUrlRewriter伪静态技术运用分析通常我们为了更好的缓解服务器压力,和增强搜索引擎的友好面,都将文章内容生成静态页面。
但是有时为了能实时的显示一些信息,或者还想运用动态脚本解决一些问题,不能用静态的方式来展示网站内容,必须用到动态页面显示。
这样以来,就损失了对搜索引擎的友好面,怎么样在两者之间找个中间方法呢,如何增强你网站中地址的可读*和让搜索引擎快速的收录到你的站点?这就需要你美化你的网页的地址,这就产生了伪静态技术,也就是我们常说的UrlRewriter重写技术。
就是当我们访问一个页面时,地址栏中展示出来的是以“”为结尾的静态页面形式,而实际上我们访问的动态网页。
这里就需要用到UrlRewriter技术。
大家熟悉的可能有很多服务器都提供Url重写的技术,以前我们用的最多的就是Apache,Jboss这样一些服务器自带的一些Url重写,但是他们的配置比较麻烦,*能又不是太好。
现在我们有专一的开源框架来完成Url重写任务,今天我要介绍的就是UrlRewriteFilter,它使用起来比较简单。
UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。
适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。
其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
我们先简单的了解一下使用Url重写能给你网站带来哪些好处。
第一:有利于搜索引擎的抓取,因为现在大部分的搜索引擎对动态页面的抓取还比较弱,它们更喜欢抓取一些静态的页面。
而我们现在的页面大部分的数据都是动态的显示的。
这就需要我们把动态页面变成静态的页面,有利于搜索引擎的抓取。
第二:让用户更容易理解,很少有用户去关心你网站的页面的地址,但对一般的大中型网站增强可读*还是必须的。
这样会让你的网站更加完美。
第三:隐藏技术的实现,我们可以通过Url重写可以实现技术的隐藏。
php伪静态--mod_rewrite 详解
mod_rewrite 详解mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。
下面我详细说说它的使用方法!对初学者很有用的哦!1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
如果没有开启“mod_rewrite”,则打开目录您的apache安装目录“/apache/conf/” 下的httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
2.让apache服务器支持.htaccess如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了。
打开httpd.conf 文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找<Directory />Options FollowSymLinksAllowOverride None</Directory>改为<Directory />Options FollowSymLinksAllowOverride All</Directory>就可以了。
3.建立.htaccess 文件如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt 的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:(1)用记事本打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
nginx rewrite 参数和例子+常用Rewrite伪静态法则
正则表达式匹配,其中:1. * ~ 为区分大小写匹配2. * ~* 为不区分大小写匹配3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配,其中:1. * -f和!-f用来判断是否存在文件2. * -d和!-d用来判断是否存在目录3. * -e和!-e用来判断是否存在文件或目录4. * -x和!-x用来判断文件是否可执行flag标记有:1. * last 相当于Apache里的[L]标记,表示完成rewrite2. * break 终止匹配, 不再匹配后面的规则3. * redirect 返回302临时重定向地址栏会显示跳转后的地址4. * permanent 返回301永久重定向地址栏会显示跳转后的地址一些可用的全局变量有,可以用做条件判断(待补全)1. $args2. $content_length3. $content_type4. $document_root5. $document_uri6. $host7. $http_user_agent8. $http_cookie9. $limit_rate10. $request_body_file11. $request_method12. $remote_addr13. $remote_port14. $remote_user15. $request_filename16. $request_uri17. $query_string18. $scheme19. $server_protocol20. $server_addr21. $server_name22. $server_port23. $uri结合QeePHP的例子1. if (!-d $request_filename) {2. rewrite^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1 &action=$2&$3 last;3. rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;4. break;多目录转成参数/sort/2 => /index.php?act=sort&name=abc&id=21. if ($host ~* (.*)/.domain/.com) {2. set $sub_name $1;3. rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;4. }目录对换/123456/xxxx -> /xxxx?id=1234561. rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:1. if ($http_user_agent ~ MSIE) {2. rewrite ^(.*)$ /nginx-ie/$1 break;3. }目录自动加“/”1. if (-d $request_filename){2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;3. }禁止htaccess1. location ~//.ht {2. deny all;3. }禁止多个目录1. location ~ ^/(cron|templates)/ {2. deny all;3. break;4. }禁止以/data开头的文件可以禁止/data/下多级目录下.log.txt等请求;1. location ~ ^/data {2. deny all;3. }禁止单个目录不能禁止.log.txt能请求1. location /searchword/cron/ {2. deny all;3. }禁止单个文件1. location ~ /data/sql/data.sql {2. deny all;3. }给favicon.ico和robots.txt设置过期时间;这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志1. location ~(favicon.ico) {2. log_not_found off;3. expires 99d;4. break;5. }6.7. location ~(robots.txt) {8. log_not_found off;9. expires 7d;10. break;11. }设定某个文件的过期时间;这里为600秒,并不记录访问日志1. location ^~ /html/scripts/loadhead_1.js {2. access_log off;3. root /opt/lampp/htdocs/web;4. expires 600;5. break;6. }文件反盗链并设置过期时间这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求“rewrite ^/ /leech.gif;”显示一张防盗链图片“access_log off;”不记录访问日志,减轻压力“expires 3d”所有文件3天的浏览器缓存1. location ~* ^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {2. valid_referers none blocked * * localhost208.97.167.194;3. if ($invalid_referer) {4. rewrite ^/ /leech.gif;5. return 412;6. break;7. }8. access_log off;9. root /opt/lampp/htdocs/web;10. expires 3d;11. break;12. }只充许固定ip访问网站,并加上密码1. root /opt/htdocs/www;2. allow 208.97.167.194;3. allow 222.33.1.2;4. allow 231.152.49.4;5. deny all;6. auth_basic "C1G_ADMIN";7. auth_basic_user_file htpasswd;将多级目录下的文件转成一个文件,增强seo效果/job-123-456-789.html 指向/job/123/456/789.html1. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /job/$1/$2/jobshow_$3.html last;将根目录下某个文件夹指向2级目录如/shanghaijob/ 指向/area/shanghai/如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/1. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;上面例子有个问题是访问/shanghai 时将不会匹配1. rewrite ^/([0-9a-z]+)job$ /area/$1/ last;2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;这样/shanghai 也可以访问了,但页面中的相对链接无法使用,如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。
PHP简单的伪静态URL机制实现
PHP简单的伪静态URL机制实现PHP虽然是一门新语言,但是如果编程语言写的好容易上手。
以下是精心为大家的PHP教程,希望对大家有所帮助!更多内容请关注!曾几何时,我们公司准备开发一套新的建站系统,决定将以前的框架给KO掉,重新开发一套新的框架来适应新的系统功能。
领导们不希望使用外面已有的框架,号称要开发有自己特色的框架(不懂开发的领导害死人)。
于是我们又投入到了新的开发当中。
由于我们的系统支持伪静态,以前的系统是直接使用服务器apache或IIS自带的rewrite文件定义规则,而框架中没有任何路由机制,于是这次框架准备使用新的策略,由PHP实现路由机制。
于是我开始了功能实现的探索之路。
开发之前,我先了解‘路由机制’要做什么,它主要做两件事。
1.路由机制就是把某一个特定形式的URL结构中提炼出来系统对应的参数。
举个例子,如:main.wopop./article/1其中:/article/1->?_m=article&id=1。
2.其次,是将拥有对应参数的URL转换成特定形式的URL结构,是上面的过程的逆向过程。
由于路由机制隔离了URL结构和参数的转换关系,使的日后结构的变化不会影响下面代码的执行。
通过上面的了解,可以得出要编写一个路由机制要一下几步: 1.编写服务器apache或IIS自带的rewrite文件,将URL结构导入index.php。
2.一个路由规则配置文件。
3.一个路由解析器,用来解析规则,匹配和转换URL。
于是,我们一一实现其中的每一个部分。
1.rewrite文件编写,以Apache为例:上面的代码就是将URL结构导入index.php中,具体的rewrite 细节就不赘述了。
2.在PHP中设置一个路由规则配置文件routes.php,我简单的使用了一个hash数组编写规则:3.路由机制中最复杂也是最重要的一部分,就是解析器。
解析器有两个类组成(名字可能起的不佳)。
伪静态 rewrite规则
伪静态rewrite规则摘要:1.伪静态概念介绍2.伪静态rewrite 规则的作用3.伪静态rewrite 规则的编写方法4.伪静态rewrite 规则的实际应用5.伪静态rewrite 规则的优点与局限性正文:1.伪静态概念介绍伪静态(Pseudo Static)是一种在动态网页上实现静态页面效果的技术。
它允许在动态网页上使用静态页面的URL,从而提高网站的性能和用户体验。
伪静态技术通常用于PHP、Python 等编程语言,通过服务器端的代码实现动态内容与静态页面的结合。
2.伪静态rewrite 规则的作用伪静态rewrite 规则是实现伪静态技术的核心部分,它可以将动态网页的URL 重写为静态页面的格式。
这样,用户在访问网站时,浏览器会直接请求静态页面,而不是经过服务器的动态渲染。
这种技术可以有效地提高网站的访问速度,减轻服务器负担,同时方便搜索引擎的收录。
3.伪静态rewrite 规则的编写方法伪静态rewrite 规则通常通过服务器端的代码实现,以PHP 为例,可以使用PHP 的内置函数「rewrite」来实现。
以下是一个简单的伪静态rewrite规则示例:```php<?php// 判断是否为伪静态请求if (isset($_SERVER["HTTP_X_Rewrite_Url"])) {// 提取URL 中的参数$url_params = parse_str($_SERVER["HTTP_X_Rewrite_Url"], "/");// 根据参数构建动态SQL$sql = "SELECT * FROM content WHERE id=".$url_params["id"];// 执行SQL 获取动态内容$content = mysqli_query($sql);// 将动态内容输出到页面while ($row = mysqli_fetch_array($content)) {echo "【".$row["title"]."】".$row["content"]."<br>";}} else {// 输出静态页面内容echo "欢迎来到伪静态示例网站!";}>```4.伪静态rewrite 规则的实际应用在实际应用中,伪静态rewrite 规则可以根据网站的需求和结构进行灵活调整。
301_伪静态_url重写
伪静态(Rewrite).htaccess文件详解.htaccess文件使用详解1.1 什么是.htaccess文件从本指南中,你将可以学习到有关.htaccess文件及其功能的知识,并用以优化你的网站。
尽管.htaccess 只是一个文件,但它可以更改服务器的设置,允许你做许多不同的事情,最流行的功能是您可以创建自定义的“404 error”页面。
.htaccess 并不难于使用,归根结底,它只是在一个text文档中添加几条简单的指令而已。
首先你要判断主机支持它这可能很难用简单的答案来回答。
许多主机支持.htaccess,但实际上并不会特别声明,许多其他类型的主机有能力但并不允许他们的用户使用. htaccess。
一般来说,如果你的主机使用Unix或Linux系统,或任何版本的Apache网络服务器,从理论上都是支持.htaccess的,尽管你的主机服务商可能不允许你使用它。
判断你的主机是否允许.htaccess,一个标志很好的是它是否支持文件夹密码保护。
为达到此功能,主机服务商需要使用.htaccess(当然,少数情况下他们虽提供密码保护功能,但却并不允许你使用.htaccess)。
如果你不确定自己的主机是否支持. htaccess,最好的办法是上传你自己的.htaccess文件看看是否有用,或者直接发送e-mail向你的主机服务商咨询。
Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法,即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。
作为用户,所能使用的命令受到限制。
管理员可以通过Apache的AllowOverride指令来设置。
子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。
.htaccess必须以ASCII模式上传,最好将其权限设置为644。
.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件。
URL伪静态总结
利用伪静态技术来完成。
Rewriterule有很多功能,一般都是来完善网站和美化网站很多情况下,某个IP 的访问很容易造成CPU 100% (比如某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的IP,让他无法消耗服务器的资源,封IP 的方法有很多种,如果你的Web 服务器安装了Rewrite 模块的话,也可以试试利用Rewrite 规则封掉对方的IP。
1、例如我们把某个特定的IP 直接重定向到baidu 首页,在网站根目录的 .htaccess 文件里添加代码:RewriteCond % 123.123.123.123 [NC] RewriteRule ^(.*)$ /$1 [R=301] 将123.123.123.123 这个IP 替换成您要限制的IP 即可2、如果要实现多个IP ,可以这样写:RewriteCond % 123.123.123.123 [OR]RewriteCond % 124.124.124.124[NC]RewriteRule ^(.*)$ /$1 [R=301]$base = self::fixslashes ( preg_replace ( '/\/[^\/]+$/', '', $_SERVER['SCRIPT_NAME'] ) );一条RewriteRule指令,定义一条重写规则,规则间的顺序非常重要。
对Apache1.2及以后的版本,模板(pattern)是一个POSIX正则式,用以匹配当前的URL。
当前的URL不一定是用记最初提交的URL,因为可能用一些规则在此规则前已经对URL进行了处理。
对mod_rewrite来说,!是个合法的模板前缀,表示“非”的意思,这对描述“不满足某种匹配条件”的情况非常方便,或用作最后一条默认规则。
当使用!时,不能在模板中有分组的通配符,也不能做后向引用。
destoon之URLRewrite(伪静态)设置方法详解
destoon之URLRewrite(伪静态)设置⽅法详解# Destoon B2B Rewrite RulesErrorDocument 404 /404.phpRewriteEngine OnRewriteBase /RewriteRule ^(.*)\.(asp|aspx|asa|asax|dll|jsp|cgi|fcgi|pl)(.*)$ /404.phpRewriteRule ^(.*)/file/(.*)\.php(.*)$ /404.phpRewriteRule ^(.*)-htm-(.*)$ $1.php?$2RewriteRule ^(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4RewriteRule ^(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ $1/list.php?catid=$2&page=$4RewriteRule ^(.*)/show/([0-9]+)/([0-9]+)?([/])?$ $1/show.php?itemid=$2&page=$3RewriteRule ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3RewriteRule ^(.*)/([A-za-z0-9_\-]+)-c([0-9]+)-([0-9]+)\.html$ $1/list.php?catid=$3&page=$4RewriteRule ^(.*)/([a-z]+)/(.*)\.shtml$ $1/$2/index.php?rewrite=$3RewriteRule ^(com)/([a-z0-9_\-]+)/([a-z]+)/(.*)\.html$ index.php?homepage=$2&file=$3&rewrite=$4RewriteRule ^(com)/([a-z0-9_\-]+)/([a-z]+)([/])?$ index.php?homepage=$2&file=$3RewriteRule ^(com)/([a-z0-9_\-]+)([/])?$ index.php?homepage=$22、如果是Apache服务器:Apache 1.x 的⽤户请检查 conf/httpd.conf 中是否存在如下两段代码:LoadModule rewrite_module libexec/mod_rewrite.soAddModule mod_rewrite.cApache 2.x 的⽤户请检查 conf/httpd.conf 中是否存在如下⼀段代码:LoadModule rewrite_module modules/mod_rewrite.so如果存在,且以#开头,请删除#。
Linux主机上wordpress的url伪静态化优化技巧
Linux主机上wordpress的url伪静态化优化技巧wordpress是一款非常优秀的开源博客程序,对于用户和搜索引擎的友好性都是毋庸置疑的。
今天小传就给新手介绍一下Linux主机上wordpress的url伪静态化优化技巧,希望高手看了不要笑话。
为什么会选择Linux主机呢?是由于小传对Linux主机比较钟爱,网站也都是选用的php+mysql开源程序。
对于windows主机上的 wordpress如何设置url伪静态化了解和操作的都不多,所以暂时就不介绍。
对于我的建议,还是提倡使用Linux主机,因为在Linux主机上运行的php速度比起windows来说更快更稳定而且更加的安全,所以建议如果使用php+mysql程序的话,最好还是选用Linux 主机。
关于如何安装wordpress这个开源程序就不多讲了,因为很简单,相信新手们也都可以很快掌握。
主要讲讲安装好以后如何进行URL伪静态化处理。
wordpress上传至主机空间并安装好以后呢,首先建议的是把它的url伪静态化给设置好,因为url伪静态化对于搜索引擎是非常友好的,对于相关长尾关键词的排名也非常有帮助。
大家可以搜索一些长尾关键词,然后看看搜索结果中,其中大部分都是以.html或.htm结尾的静态链接排在前面,很少有看到形如/?p=5、php?post=6&data=25这样的页面排在前面,除非是一些权重非常高、搜索引擎比较信任的高权重网站。
即使是百度百科,它也做了URL伪静态化处理,大家可以搜索一下看。
由于程序刚安装好、还没有被搜索引擎收录,所以建议程序安装好以后马上就把url伪静态化做好。
如果被搜索引擎收录了以后,再进行修改的话,可能会造成一些死链接,给搜索引擎造成的第一印象就不太友好,所以这个小细节需要注意。
关于url伪静态化的设置,在Linux主机上是非常简单的,由于wordpress非常给力,设置伪静态化也非常简单,不需要大家自己去写URL 重写规则,只要相关文件权限设置合理,它就会自己把URL重写规则写好,不用你劳神费心,呵呵,是不是感觉很好玩、急于想知道呢?下面就简单介绍一下 wordpress的伪静态化处理。
IIS6下.net项目UrlRewriter.dll伪静态URL重写路径的配置教程
Internet Information Services,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。
最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行。
本文介绍在IIS6中.net项目伪静态重写路径的配置方法图解和示例。
1、右键点击要设置网站的网站2、属性——》主目录——》配置——》3、如右侧窗口,找到.aspx 扩展名——》编辑——》复制可执行文件的路径——》关闭4、点击添加——》粘贴刚复制的可执行文件路径5、扩展名填写 .html (如果是.htm 或者任意你想要的扩展都可以前提是以后的应用程序扩展列表里边没有该扩展)6、不选中确认文件是否存在7、确定iis6 web.config 伪静态配置方法1、参数用()括起来,使用$1 来获得参数。
2、多个参数的时候使用&分割。
3、把Intelligencia.UrlRewriter.dll添加到bin目录<section name="rewriter" requirePermission="false"type="Intelligencia.UrlRewriter.Configu ration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/></configSections><system.web><httpModules><add type="Intelligencia.UrlRewriter.RewriterHttpModule,Intelligencia.UrlRewriter" name="UrlRewriter"/></httpModules></system.web><rewriter><!--首页--><rewrite url="~/default.html$" to="~/default.aspx" processing="stop"/><!--新闻--><rewrite url="~/news/list-([A-Za-z0-9-]*).html$" to="~/NewsList.aspx?typeUrl=$1" processi ng="stop"/><rewrite url="~/news/list-([A-Za-z0-9-]*)-([0-9]*).html$"to="~/NewsList.aspx?typeUrl=$1 &page=$2" processing="stop"/><!--新闻详细--><rewrite url="~/news/([A-Za-z0-9-]*).html$" to="~/NewsDetail.aspx?url=$1"processing="st op"/></rewriter></configuration>就到这里。
ASPNET伪静态 UrlRewrite(Url重写) 实现和配置------转载
伪静态 UrlRewrite(Url重写) 实现和配置------转载2010-08-30 11:06 来源:博客园作者:夏楚枫阅读:81次核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度...大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦。
结构以上事实,然后伪静态技术产生了,规范的说就是URL重写技术,他对于ASPX格式支持最好,当然也可以重写HTML格式的文件,但这需要IIS的设置,相对比来说,ASPX格式的更方便,本站就是采用了该URL重写技术,这个技术优点显而易见:方便搜索引擎收录,方便查看,等等。
那么接下来我们来看看如何配置他吧首先你要在你的项目里引用两个DLL:URLRewriter.dllActionlessForm.dll真正实现重写的是 URLRewriter.dll 但是如果你要实现分页,那么必须使用这个ActionlessForm.dllURLRewriter.dll1、下载文件下载地址1:/source/524514下载地址2:/UserFiles/URLRewriter.rar 下载地址3:/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi下载地址4:本站下载2、配置WEB.CONFIG文件在项目中引用这个程序集,伪静态语法...(例把.aspx 的页面用.html来表示,web.config文件中--> 添加以下节点 <configuration><configSections><section name="RewriterConfig" requirePermission= "false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /></configSections><RewriterConfig><Rules><RewriterRule><!--一个参数-><LookFor>~/cn/ss_(.[d]*).html</LookFor><SendTo>~/cn/news.aspx?id=$1</SendTo></RewriterRule><RewriterRule><!--传两个参数的--><LookFor>~/cn/ss_(.[d]*)0(.[w]*).html</Look For> <!--(.[d]*)(.[w]*).html 或者ss_,(.[0-9]*),(.[0-9]*).html--><SendTo><![CDATA[~/cn/news.aspx?id=$1&sid=$ 2]]></SendTo></RewriterRule><RewriterRule><!--三个参数--><LookFor>~/cn/ss_(.[d]*)0(.[w]*)0(.[w]*).ht ml</LookFor><SendTo><![CDATA[~/ZH-CN/news.aspx?id=$1&si d=$2&n_id=$3]]></SendTo></RewriterRule><RewriterRule><LookFor>~/dfsaddf/index(d*).html</LookFor><SendTo>~/Favorites_Page.aspx</SendTo></RewriterRule></Rules></RewriterConfig></configuration><system.web><httpHandlers><add verb="*" path="*.aspx" type="URLRew riter.RewriterFactoryHandler, URLRewriter" /><add verb="*" path="*.html" type="URLRew riter.RewriterFactoryHandler, URLRewriter" /></httpHandlers></system.web><!--<httpModules><add type="URLRewriter.ModuleRewriter, URLRew riter" name="ModuleRewriter"/></httpModules>-->设置完以上步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。
PHP伪静态规则写法RewriteRule-htaccess详细语法使用
PHP伪静态规则写法RewriteRule-htaccess详细语法使⽤2016-09-03 21:27 206⼈阅读 (0) 收藏⼀、正则表达式教程伪静态规则写法RewriteRule-htaccess详细语法使⽤教程分享简单说下:伪静态实际上是利⽤PHP把当前地址解析成另外⼀种⽅法进⾏访问⽹站!要学伪静态规则的写法,你必须得懂⼀点正则,不会没关系,照着下⾯的套就⾏⼀、正则表达式教程有⼀个经典的教程:这个教程的确很简单,看完基本上写⼀些简单的正则就没有问题了。
正则是⼀个需要长期使⽤的⼯具,隔段时间不⽤会忘记,所以我每次都看⼀遍这个教程。
其实学过之后重要的就是⼀点内容。
简单罗列如下:.换⾏符以外的所有字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空⽩符\d 匹配数字\b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束* 重复零次或更多次+ 重复⼀次或更多次重复零次或⼀次{n} 重复n次{n,}重复n次或更多次{n,m} 重复n到m次应⽤替换时,前⾯第⼀个()中匹配的内容后⾯就⽤$1引⽤,第⼆个()中匹配的就⽤$2应⽤……这个个()⾥⾯的东东叫原⼦组分析⼀下 discuz搜索引擎优化 htaccess ⾥⾯的重写。
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2⾸先加⼊⽤户通过 /forum-2-3.html 访问discuz论坛,那么先通过.htaccess过滤,看看是否需要.htaccess引导⼀下⽤户,如果满⾜列出的⼀系列RewriteCond的条件那么就进⾏重写,discuz的没有列出RewriteCond 所以应该全部都进⾏重写。
所以开始进⾏转写,forum-2-3.html 这个正好符合列出的^forum-([0-9]+)-([0-9]+)\.html$正则表达式。
URL+Rewriter组件实现页面伪静态
中国信息化技术与应用·97·本、符号和标注来使用户的地图信息变得更加丰富。
除了上述特点之外,MapX 还能和其所支持的远程数据库诸如Oracle , MapInfo Spatial Ware 挂接,能通过数据绑定把数据库中的数据显示在地图中,能通过空间服务器提供的高级查询处理功能进行查询;若和GPS 相结合还能显示大面积上的移动对象。
这些特点也正是MapX 适用于开发地理信息系统的主要原因。
3.系统构成3. 1 系统功能简介本文文应用MapX 组件和面向对象编程语言Visual C++集成的二次开发模式,系统不仅具有GIS 软件必备的基本功能;同时还具有良好的可扩展性,使开发者能按照业务管理的变化添加其他应用。
系统的主要功能如下:1)导入图层。
用户能按照自己的需要导入各种图层。
2)编辑操作。
用户能按照不同的业务需求,在可编辑图层上进行图元标注、符号注释、文本注释等编辑操作。
3)地图工具。
具有地图的基本功能诸如放大、缩小、漫游、点选、框选等。
同时,为用户提供了工具栏,大大简化了用户操作。
4)图层管理。
在加点、加线、加面操作后,能选择其样式、颜色,使其更人性化,同时能查看整个图层。
5)地图和数据的维护。
为了适应不断发生的变化,地图和数据的维护能使系统得到充分的利用。
此功能能对空间数据进行修改、增删、调整等操作。
3. 2 系统结构组成图1 系统结构4.系统的实现在VC 环境下开发GIS 软件,首先要将MapX 作为控件插入到应用程序中,然后通过设置其属性、调用其方法、响应其事件来实现所需的具体功能。
此系统的开发步骤如下:4. 1 应用框架的生成在VC 环境下,利用生成向导“AppWizard",快速地生成MFC 的应用程序,进而得到标准的Windows 应用程序界面。
4. 2 添加MapX 支持类库和变且声明在Visual C++环境中,使用Project/Add To Project/Files ,添加MAPX.CPP 和MAPX.H 文件,将MapX 支持类库添加到当前工程中。
UrlRewrite代替apache实现jsp页面伪静态化_凌风_
Url Rewrite Filter 是一个基于java的url rewirte开源项目,功能类似Apache中的rewrite模块。
其实,Url Rewrite让apache来负责才是最好的选择,因为mod_rewrite 已经很成熟了,功能或者效率上都更好用,apache已足以使urlrewrite的功能透明了,对于多个应用使用起来更方便。
这篇文章介绍的urlrewrite filter只是给那些不打算使用apache的应用提供了另外一种选择。
一、主要功能a) 实现url地址的伪静态化例如可以把http://localhost:8080/myindex.do?method=listIndex&user=ezplus的请求重定向或转发到http://localhost:8080/blog/ezplus,这样做就避免了url中出现?&之类的符号,而且页面伪静态化之后也增加了被搜索引擎找到的概率。
b) 根据配置文件自动转化页面上的连接在写页面的时候程序员不用关心在页面中出现的url地址将被如何伪静态化,例如,程序员还是可以在写页面的时候使用http://localhost:8080/myindex.do?method=listIndex&user=ezplus,通过在urlrewrite.xml中配置<outbound-rule></outbound-rule>,既可以实现页面url地址自动转化为伪静态化后的地址,用户在查看页面源码的时候原http://localhost:8080/blog/ezplus将被自动替换为http://localhost:8080/blog/ezplus二、安装使用1.下载地址:下载的文件(Binary的)结构简单:urlrewrite.xml和lib文件夹下的一个.jar2.jar文件放入项目的lib库中,urlrewrite.xml和web.xml放在一块。
伪静态 rewrite规则
伪静态 rewrite规则
伪静态(Pseudo-static)是一种在网站开发中常见的技术,它通过 URL 重写规则将动态生成的页面 URL 转换为看起来像静态页面的 URL。
这样可以改善搜索引擎优化(SEO)和用户友好度,同时保留动态生成页面的灵活性。
在使用伪静态时,通常需要使用 rewrite 规则来将原始的动态 URL 重写为静态 URL,以便服务器能够正确地处理请求。
具体的 rewrite 规则语法和配置方式可能因服务器环境和使用的 web 服务器而有所不同。
以下是一个示例rewrite 规则的常见写法,以 Apache HTTP Server (mod_rewrite) 为例:
RewriteEngine On
RewriteRule ^/static-page/(\d+)$ /index.php?page=$1 [L]
在上述示例中,RewriteEngine On 表示启用 rewrite 引擎。
RewriteRule 是一个规则声明,用于将匹配的 URL 重写为指定的目标 URL。
示例中的规则将匹配形如 /static-page/123 的 URL,并将其重写为 /index.php?page=123。
具体的 rewrite 规则根据项目的需求和 URL 结构而有所不同,常见的规则包括将带有查询参数的 URL 重写为路径形式、隐藏文件扩展名、处理搜索引擎友好的 URL 等。
请注意,rewrite 规则的具体语法和配置方式可能因使用的 web 服务器和配置文件而有所不同。
对于其他服务器环境,如 Nginx、IIS 等,需要参考相应的文档和配置指南来了解具体的 rewrite 规则语法和配置方法。
JAVA实现URL rewrite伪静态
JA V A实现URL rewrite伪静态,具体代码如下:urlrewrite伪静态<rule><from><![CDATA[/products/id-([0-9]+)-pid-([0-9]+).html]]></from> <to><![CDA TA[/products/index.jsp?id=$1&pid=$2]]></to></rule>你不是想做java版的伪静态吗这个比外国的urlrewrite.jar效率更高JA V A代码:package org.apple.util.urlrewrite;/***曹正辉QQ:330937205 SimpleOnline 开发团队**/public class Rule {@Overridepublic String toString() {return "Rule [from=" + from + ", to=" + to + "]";}private String from;private String to;public void setFrom(String from) {this.from = from;}public String getFrom() {return from;}public void setTo(String to) {this.to = to;}public String getTo() {return to;}/*** 真正的处理方法**/public String dealWithUrl(String url, Boolean isHandler) {boolean isMatches = url.matches(from);if (isMatches) {isHandler = true;url = url.replaceAll(from, to);return url;} else {return url;}}}package org.apple.util.urlrewrite;/***曹正辉QQ:330937205 SimpleOnline 开发团队**/public class StringUtils {public static boolean isBlank(String string) {if (string == null) {return true;} else {return false;}}public static boolean isNotBlank(String string) {if (string != null && "".equals(string.trim())) { return true;} else {return false;}}}package org.apple.util.urlrewrite;import java.io.File;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/***曹正辉QQ:330937205 SimpleOnline 开发团队2013-9-2 **/public class UrlRewriteFilter implements Filter {private UrlRewriter urlRewriter;private boolean reloadConfig = true;private long reloadConfigInterval = 60;private String configPath = "/WEB-INF/urlrewrite.xml";private String configURLPath = "";private long lastReloadConfigCheckTime = System.currentTimeMillis();private long configFilelastModified = System.currentTimeMillis();public void init(FilterConfig filterConfig) throws ServletException {String configPath = filterConfig.getInitParameter("configPath");if (StringUtils.isNotBlank(configPath)) {this.configURLPath = WebPath.WebRootPath + configPath;File file = new File(this.configURLPath);if (!file.exists()) {throw new RuntimeException("urlrewrite所需的配置文件路径出错");}} else {this.configURLPath = WebPath.WebRootPath + this.configPath;File file = new File(this.configURLPath);if (!file.exists()) {throw new RuntimeException("urlrewrite.xml配置文件不存在");}}urlRewriter = new UrlRewriter(configURLPath);}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {if (this.reloadConfig) {reloadConfig();}try {boolean isOk = urlRewriter.dealWithUrl((HttpServletRequest) servletRequest, (HttpServletResponse) servletResponse);if (isOk) {// 自动跳转} else {filterChain.doFilter(servletRequest, servletResponse);}} catch (Exception e) {throw new RuntimeException(e);}}/*** 每次http访问的时候根据配置文件检查时间大于其系统规定的间隔时间和配置文件是否修改,来决定是否重新加载配置文件*/private void reloadConfig() {/*** 下面是自动加载配置文件的算法实现*/long now = System.currentTimeMillis();if ((now - this.reloadConfigInterval > stReloadConfigCheckTime)) {stReloadConfigCheckTime = now;File file = new File(this.configURLPath);long lastModified = stModified();if (configFilelastModified != lastModified) {configFilelastModified = lastModified;// 修改后重新加载到内存urlRewriter = new UrlRewriter(configURLPath);}}}public void destroy() {}}package org.apple.util.urlrewrite;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;/***曹正辉QQ:330937205 SimpleOnline 开发团队**/public class UrlRewriter {private Rule[] rules;//构建url匹配规则public UrlRewriter(String configURLPath) {ArrayList<Rule> roleUrlList = getAllRileList(configURLPath);int size = roleUrlList.size();rules = new Rule[size];if (size != 0) {for (int i = 0; i < size; i++) {rules[i] = roleUrlList.get(i);}}}//构建url匹配规则@SuppressWarnings("unchecked")public ArrayList<Rule> getAllRileList(String filePath) {Map<String, String> regularExpressionMap = new HashMap<String, String>();ArrayList<Rule> roleUrlList = null;try {SAXReader reader = new SAXReader();Document document = reader.read(new File(filePath));Element root = document.getRootElement();roleUrlList = new ArrayList<Rule>();for (Iterator<Rule> iterator = root.elementIterator(); iterator.hasNext();) {Element element = (Element) iterator.next();Rule rule = new Rule();rule.setFrom(element.elementText("from"));rule.setTo(element.elementText("to"));String from = element.elementText("from");if (regularExpressionMap.containsKey(from)) {throw new RuntimeException("from: " + from + "值重复");}regularExpressionMap.put(from, "ok");// 加入之前需要检测该from和to所对应的正则表达式是否存在roleUrlList.add(rule);}} catch (Exception e) {throw new RuntimeException(e);}return roleUrlList;}public boolean dealWithUrl(HttpServletRequest request, HttpServletResponse response) throws Exception {String url = request.getServletPath().trim();// 只是针对String url_copy = url;if (rules.length != 0) {int rulesLength = rules.length;Boolean isHandler = false;for (int i = 0; i < rulesLength; i++) {url = rules[i].dealWithUrl(url, isHandler);//如果匹配则进行替换,然后进行页面的跳转if (url != null && !"".equals(url) && (!url_copy.equals(url))) {request.getRequestDispatcher(url).forward(request, response);return true;}}}return false;}}package org.apple.util.urlrewrite;public class WebPath {//获取web根目录/*** @return eg:/D:/apache-tomcat-6.0.35/webapps/urlrewrite/*/public static String WebRootPath = WebPath.class.getResource("/").getPath().toString().replace("/WEB-INF/classes/", "");}<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="xmlns:xsi=""xsi:schemaLocation="><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><display-name>SimpleOnline 开发团队开发的一个UrlRewrite插件--注意该过滤器建议配置为第一个过滤器</display-name><filter-name>UrlRewriteFilter</filter-name><filter-class>org.apple.util.urlrewrite.UrlRewriteFilter</filter-class><init-param><param-name>configPath</param-name><param-value>/WEB-INF/urlrewrite.xml</param-value></init-param><init-param><description>用于信息调试--该插件自带SimpleOnline 开发团队的日志[log4j]记录插件,建议自己修改源码中的日志记录方式,如果需要修改本团队的日志插件为自身的配置只需修改Apple-CommonsLogging.jar/log4j.properties中的配置</description><param-name>devMode</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app><?xml version="1.0" encoding="utf-8"?><!--版权归曹正辉所有QQ:330937205 SimpleOnline 开发团队[2013-1-1年成立,国内开源开发团队SimpleOnline 欢迎您的加入][负责人曹正辉]配置如下<filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.apple.util.urlrewrite.UrlRewriteFilter</filter-class><init-param><param-name>configPath</param-name><param-value>/WEB-INF/urlrewrite.xml</param-value></init-param><init-param><param-name>devMode</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>下面是支持的策略注意<from><![CDATA[/test]]></from><to><![CDA TA[/rewrite.jsp]]></to>中间不要有空格--><urlrewrite><rule><from><![CDA TA[/test]]></from><to><![CDA TA[/rewrite.jsp]]></to></rule><rule><from><![CDA TA[/test/test]]></from><to><![CDA TA[/rewrite.jsp]]></to></rule><rule><from><![CDA TA[/some/old/page.html]]></from><to><![CDA TA[/some/new/page.html]]></to></rule><rule><from><![CDATA[/test/test/(.*)]]></from><to><![CDA TA[/test2/test2/$1]]></to></rule><rule><from><![CDA TA[/products/([0-9]+)]]></from><to><![CDA TA[/products/index.jsp?id=$1]]></to></rule><rule><from><![CDA TA[/products/([0-9]+)/([0-9]+)]]></from><to><![CDA TA[/products/index.jsp?id=$1&pid=$2]]></to> </rule></urlrewrite><!-- 插件支持:自动重新加载rule列表-->更多信息请查看IT技术专栏。
urlrewrite伪静态及多参数传递-附正则表达式语法[轉]
urlrewrite伪静态及多参数传递-附正则表达式语法[轉]⾸先加载 urlrewrite包配置web。
xml[list][*]Java代码1. <error-page>2. [*] <error-code>404</error-code>3. [*] <location>/error.jsp</location>4. [*] </error-page>5. [*][/list]Java代码1. [list]2. [*] <filter>3. [*] <filter-name>UrlRewriteFilter</filter-name>4. [*] <filter-class>5. [*] org.tuckey.web.filters.urlrewrite.UrlRewriteFilter6. [*] </filter-class>7. [*] </filter>8. [*] <filter-mapping>9. [*] <filter-name>UrlRewriteFilter</filter-name>10. [*] <url-pattern>/*</url-pattern>11. [*] </filter-mapping>12. [/list]以及 urlrewrite.xmlJava代码1. [list]2. [*] <rule>3. [*]4. [*]//或者 <from>^/test/users/([0-9]+).html$</from>5. [*] <from>^/test/users/([0-9]+)(/)?$</from> <!-- (/)? 匹配前⾯的字符1或0次匹配数字结尾的或者数字/结尾的 11112或 11112/ -->6. [*] <to>/test.jsp?users=$1</to>7. [*] </rule>8. [*]<!-- 静态 -->9. [*] <rule>10. [*] <from>^/test.html</from>11. [*] <to type="forward">/demo.jsp</to>12. [*] </rule>13. [/list]<a href="test/users/123456">动态传参测试</a><a href="test/users/123456/">动态传参测试</a><a href="test.html">静态测试</a>多参数传递Java代码1. [list]2. [*] <rule>3. [*] <from>^/test/([0-9]+)/([0-9a-zA-Z]+)$</from> <!-- (/)? 匹配前⾯的字符1或0次匹配数字结尾的或者数字/结尾的 11112或 11112/ -->4. [*] <to type="forward">/tservert?users=$1&tt=$2</to>5. [*] </rule>6. [*]7. [/list]8. <to>中 & ⽤&[list]9. [*]10. [/list]Java代码1. <?xml version="1.0" encoding="utf-8"?>2.3. <urlrewrite>4. <!-- 帖⼦列表 -->5. <rule>6. <from>^/forum-(\d+)-(\d+)\.html$</from>7. <to type="forward">/servlet/TopicListServelet?sid=$1&page=$2</to>8. </rule>9. <!-- 帖⼦列表加分页10. <rule>11. <from>^/subcate_list_(\d+)\.html$</from>12. <to type="forward">/servlet/TopicListServelet?sid=$1</to>13. </rule> -->14. <!-- 帖⼦详细信息 -->15. <rule>16. <from>^/thread-(\d+)\.html$</from>17. <to type="forward">/servlet/TopicDetailServlet?tid=$1</to>18. </rule>19. </urlrewrite>(123.5 KB)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Url Rewrite Filter实现页面伪静态化,简单实例及步骤1.首先新建一个Web Project本例把它命名为:UrlRewrite,在创建的时候,选择勾选“Add JSTL libraries to WEB-INF/lib folder ”(注:因为项目中会用到jstl 核心标签库),然后再把urlrewrite-2.6.0.jar 导入到项目Bulid Path路径下,最后再加入struts框架。
2.配置web.xml文件把如下代码加入到web.xml配置文件中,更多的配置可参考官方文档:<!-- UrlRewriteFilter 过滤器配置 --><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></filter-mapping>3.新增urlrewrite.xml文件<?xml version="1.0" encoding="utf-8"?><!DOCTYPE urlrewrite PUBLIC "-////DTD UrlRewrite2.6//EN" "/res/dtds/urlrewrite2.6.dtd"><urlrewrite><rule><from>^/([0-9]+).html$</from><to type= "forward">/index.jsp?id=$1</to></rule></urlrewrite>在WEB-INF目录下新建一个Url Rewrite Filter的规则配置文件,默认命名为urlrewrite.xml,示例内容如下:注:rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式,在正则表达式^指定字符的串开始,$为指定结束4.新建一个简单的action处理类在此命名为:ProcessAction.java;示例代码如下:package com.telin.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;public class ProcessAction extends DispatchAction {/***Method execute**@param mapping*@param form*@param request*@param response*@return ActionForward*/public ActionForward show(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { return mapping.findForward("ok");}}5.在struts-config.xml中添加如下內容:<action-mappings><action parameter="method" path="/process"type="com.telin.struts.action.ProcessAction"><forward name="ok" path="/show.html"></forward></action></action-mappings>6..新增index.jsp文件,添加如下内容:Hello word ! <%=request.getParameter("id")%><br />7.新增show.html文件,添加如下内容:This is OK page.8.所有文件都操作处理完后,发布并启动项目下面做一下具体讲解讲解1:正常情况下:在浏览器的地址栏中输入:http://localhost:8080/UrlRewrite/页面内容如下:Hello word ! null(因为此时id并没有值,所以显示为null)Urlrewrite之后:在浏览器的地址栏中输入:http://localhost:8080/UrlRewrite/maomao.html页面内容如下:Hello word ! maomao解析:在项目中,maomao.html实际上并不存在,该请求由Url Rewrite Filter负责拦截,由于它符合我在urlrewrite.xml中配置的拦截规则:<rule><from>^/([0-9]+).html$</from><to type= "forward">/index.jsp?id=$1</to></rule>所以该请求被转发由index.jsp负责处理,即实际处理请求的是index.jsp,但是地址栏中显示地址依旧是maomao.html.即伪静态的显示方式,并把参数id赋值”maomao”,所以页面中id此时不为null。
讲解2:正常情况下:在浏览器的地址栏输入:http://localhost:8080/UrlRewrite/process.do?method=show&uuid=index 页面内容如下:This is OK page.我们怎么把这个url实现伪静态化呢?实现方式1:在urlrewrite.xml中定义如下规则:<rule><from>^/([a-z]+)/([a-z]+)/([a-z]+)$</from><to>/$1.do?method=$2&uuid=$3</to></rule>在index.jsp中添加如下链接:<a href="process/show/index">跳转-1</a>当点击该链接,地址栏中显示url是:http://localhost:8080/UrlRewrite/process/show/index注:这种方式在很多论坛中经常使用。
实现方式2:在urlrewrite.xml中定义如下规则:<rule><from>^/([a-z]+)/([a-z]+)/([a-z]+).html$</from><to>/$1.do?method=$2&uuid=$3</to></rule>在index.jsp中添加如下链接:<a href="process/show/index.html">跳转-2</a>当点击该链接,地址栏中显示url是:http://localhost:8080/UrlRewrite/process/show/index.html注:这只是伪静态的两种url展现方式。
讲解3:在urlrewrite.xml配置文件中有两种规则:即<rule>和<outbound-rule>,在上面的例子中,讲解的都是<rule>规则,下面我们来讲解一下<outbound-rule>规则:<outbound-rule>这是非常类似的一个正常的规则,但它是用于重写的URL ,通过response.encodeURL() 或者<c:url value=””/>标签来实现下面我们在index.jsp中加入如下三段代码:<%@ taglib uri="/jstl/core-rt" prefix="c"%><a href="<%=response.encodeURL("process.do?method=show&uuid=index")%>">跳转-3</a><a href="<c:url value='process.do?method=show&uuid=index'/>">跳转-4</a>在urlrewrite.xml中加入如下<outbound-rule>规则:<outbound-rule><from>process.do\?method=([a-z]+)&uuid=([a-z]+)</from><to>./$1.html</to></outbound-rule>正常情况下:在浏览器的地址栏中输入:http://localhost:8080/UrlRewrite/我们把鼠标指向链接”跳转-3”或者”跳转-4”上的时候,状态栏的地址显示为:http://localhost:8080/UrlRewrite/show.html当我们点击链接”跳转-3”或者”跳转-4”上的时候。