A-A+

重定向和伪静态

2018年02月01日 基础知识, 服务器 暂无评论 阅读 3,102 views 次

详细介绍重定向和伪静态的原理和方法。包含在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、负载均衡

给我留言