分类: IT业界
2011-07-15 10:32:27
伪静态
----什么是伪静态
说白了伪静态就是地址中不带"?",也就是平常在网上看的的以.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:
RewriteEngine on
#开启rewrite重写引擎
RewriteBase / #存放路径
RewriteRule
^lamp.*?[_]([0-9]+).html
lampPHP.php\?id=$1
效果就是当访问"lampPHP_2.html"时,而服务器确是访问"lampPHP.php\?id=$1"这就是伪静态的效果,把动态的变为“静态”。
------例2:
下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是和70.40.213.183都跳转到主机前缀为
http://,避免相同内容的网页有多个指向的域名,如。
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot “/web”
ServerName kiya.cn
RewriteEngine
on #开启重写引擎
RewriteCond %{HTTP_HOST} !^ [NC] #mod_rewrite
规则修正符
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC]#mod_rewrite
规则修正符
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)
http:/// [L] #mod_rewrite
规则修正符
-------例3:
Rewrite 防盗链正则
不允许
这两个网站盗链 , 其它的网站都可以盗链的规则怎么写.
论坛中的答案是:
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)$
[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