伪静态_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文件。
- 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”上的时候。