皇后难为苏小凉:伪静态------rewrite简介

来源:百度文库 编辑:中财网 时间:2024/05/05 19:15:06
伪静态
----什么是伪静态
    说白了伪静态就是地址中不带"?",也就是平常在网上看的的以.html展示的页面    

----伪静态的由来
    伪静态是相对真实静态来讲的.通常我们为了更好的缓解服务器压力,和增强搜索引擎的友好面.都将文章内容生成静态页面就是展示出来的是以.html一类的静态页面形式

----伪静态的利与弊
    利:有利于被搜索引擎收录,可以防止注入,也可以防止盗链。相对于真静态而言,伪静态的应用对硬盘的损坏小。 
    弊:伪静态将占用一定量的CPU占有率,其原因就是伪静态应用了大量的正则表达式,举个例子,就是有一个页面为“lampPHP.php?id=2”经过伪静态处理可以转为“lampPHP_2.html”或者“lamp_2.html”这都是可以的,所以这需要耗掉一定的内存来将其区分开的。

----实现伪静态
    Apache配置:  
   
    启用rewrite 
    #LoadModule rewrite_module modules/mod_rewrite.so 
    去除前面的 #
    LoadModule rewrite_module modules/mod_rewrite.so

    启用.htaccess
    AllowOverride None    修改为: AllowOverride All 
   
------例1:
         #加载rewrite模块
      RewriteEngine on           #开启rewrite重写引擎
      RewriteBase    /           #存放路径 
      RewriteRule ^lamp.*?[_]([0-9]+).html lampPHP.php\?id=$1  
      

      
      效果就是当访问"lampPHP_2.html"时,而服务器确是访问"lampPHP.php\?id=$1"这就是伪静态的效果,把动态的变为“静态”。
------例2:
      下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.kiya.cn和70.40.213.183都跳转到主机前缀为http://www.kiya.cn,避免相同内容的网页有多个指向的域名,如http://kiya.cn。 

       NameVirtualHost 70.40.213.183:80 
       ServerAdmin slj@kiya.cn 
       DocumentRoot “/web” 
       ServerName kiya.cn 

       RewriteEngine on #开启重写引擎  
       RewriteCond %{HTTP_HOST} !^www.kiya.cn [NC]  #mod_rewrite 规则修正符
       RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC]#mod_rewrite 规则修正符
       RewriteCond %{HTTP_HOST} !^$  
       RewriteRule ^(.*) http://www.kiya.cn/ [L]    #mod_rewrite 规则修正符
-------例3:    
        Rewrite 防盗链正则 
        不允许www.im286.com www.chinaz.com 这两个网站盗链 , 其它的网站都可以盗链的规则怎么写. 

        论坛中的答案是: 
        RewriteEngine On 
        RewriteCond %{HTTP_REFERER} chinaz.com [NC] #HTTP_REFERER:链接到当前页面的前一页面的 URL 地址 
        RewriteCond %{HTTP_REFERER} im286.com [NC] 
        RewriteRule.*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$         http://www.xxx.com/xxxx.png [R,NC,L]
        
        解释: RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。

-------mod_rewrite 规则修正符
       1) R 强制外部重定向
       2) F 禁用URL,返回403HTTP状态码。
       3) G 强制URL为GONE,返回410HTTP状态码。
       4) P 强制使用代理转发。
       5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。
       6) N 重新从第一条规则开始运行重写过程。
       7) C 与下一条规则关联

       如果规则匹配则正常处理,以下修正符无效

       8) T=MIME-type(force MIME type) 强制MIME类型
       9) NS  只用于不是内部子请求10) NC 不区分大小写

       11) QSA 追加请求字符串
       12) NE 不在输出转义特殊字符   \%3d$1  等价于 =$1