重定向和伪静态
详细介绍重定向和伪静态的原理和方法。包含在Apache、nginx和iis中的应用。
一、什么是伪静态
伪静态概念:假的静态(相对于真实静态文件)访问。只是改变了url的表现形式,实际上还是动态页面。
那么为什么还要用伪静态呢?而不使用真静态呢?
如何取舍:数据变化大,瓶颈是在写磁盘,就用伪静态。如果瓶颈在cpu,那么就用真静态。
二、伪静态实现原理
伪静态实现原理就是重定向了。
重定向:
重新定义了一个方向,分为内部重定向和外部重定向
内部重定向:实际访问本站其他页面,但url地址不变,任然是访问的url地址;
外部重定向:实际访问本站其他页面,url地址变化为真实页面地址。
注意:外部重定向不是指跳转到外部网站的页面。而是指url地址发生了变化(任然访问的本网站其他页面)。
重定向任然是http标准协议的一部分,3XX,主要用302,303.
301永久重定向;
302临时重定向(get和post都能重定向,本来post不应该重定向,所以不再推荐使用,所以302细分为了303和307);
302可以拆分为303临时重定向(post不重定向,get自动重定向)和307临时重定向(get或head方法才重定向)
三、伪静态配置方法
A、Apache
1、apache伪静态配置文件,可以在http.conf,也可以用.htaccess(.htaccess必须开启AllowOverride)
.htaccess的好处是修改伪静态规则不用重启apache服务,且会影响.htaccess所在目录及其其所有子目录。
.htaccess的缺点是性能问题,访问页面,会查找所有上级的目录中的.htaccess文件。
所以测试环境可以用.htaccess来配置伪静态规则,调试好后,生产环境尽量不要用.htaccess,而是使用主配置文件http.conf。
2、方法
直接在.htaccess文件里面写
RewireEngine on
RewriteRule ^(.*)\.htm$ $1.html
这个规则意思是,把所有访问xxx.htm 303跳转xxx.html
规则用的是正则表达式,括号()里面匹配的值就是$1变量值。
当然php等脚本语言也可以实现重定向,不过只能实现外部重定向,也就是url地址会变。
php中通过header发送http协议头
<?php
header("Location:abc.html");
?>
跳转到abc.html文件。
http.conf配置和.htaccess内容一样,直接把同样的内容写到网站配置下即可。配置完后要重启apache,如果重启失败说明配置错误。
3、Apache重定向原理及流程
4、mod_rewrite:Apache的url操作模块,用来处理url请求的
B、Nginx配置
C、IIS配置
四、实践应用
1、防盗链
2、限制迅雷
3、文件访问控制
4、动态镜像
5、集群网站
6、负载均衡