apache 伪静态
伪静态
看起来是静态的html页面,但是实际上是动态处理的页面。
静态页面
html页面属于静态页面,就是网页内容是固定的,如果想要动态显示一些内容,可以通过ajax来实现。
伪静态 vs 静态页面
- 从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是html htm 或者是目录格式
- 伪静态只是改变了URL的表现形式,实际上还是动态页面
- 静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
apache 伪静态
apache通过开启mod_rewrite模块就可以实现伪静态。
- 修改配置文件, AllowOverride None => AllowOverride All
- 添加.htaccess文件,编写rewrite规则
.htaccess文件
apache实现伪静态的配置文件,通过此文件不仅可以实现伪静态,还可以修改一些php的配置,比如修改默认上传文件的大小,可以设置是否开启缓存,可以控制防盗链,设置错误页面
php_value post_max_size 12m
php_value upload_max_filesize 12m
php_value max_execution_time 120
php_value max_input_time 240
<FilesMatch ".(gif|jpg|jpeg|png|ico)$">
Header set Cache-Control "max-age=86400"
</FilesMatch>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?baidu.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ https://www.baidu.com [R,NC,L]
ErrorDocument 404 404.html
ErrorDocument 500 error.html
.htaccess rewrite规则
- flag标识
flag | 含义 |
---|---|
B | 转义非字母和数字的字符 |
BNP | 转义空格 |
C | 链式规则,一条失败,都失败 |
CO | 设置cookie |
E | 设置环境变量值 |
F | 禁止访问 |
L | 匹配为最后一条规则,匹配成功之后,不检索后面的匹配 |
NC | 不检查大小写 |
N | 循环匹配 |
QSA | 将查询拼接 |
PT | 将文件路径视为URI |
R | 重新定向 |
S | 跳过规则 |
- RewriteCond (条件判断)
RewriteCond TestString CondPattern
- !表示取反
- 使用逻辑运算符<,>,=,<=,>=
- 数字比较 -eq,-gt,-ge,-le,-lt,-ne
- 文件属性比较
-f 是否是文件
-d 是否是目录
-h 是否是链接
-l 是否是链接
-U 是否是存在的URL
-x 是否有可执行权限
RewriteCond %{HTTP_USER_AGENT} "=This Robot/1.0"
RewriteCond /var/www/%{REQUEST_URI} !-f
判断一个文件是否在指定目录存在,如果存在进行rewrite
RewriteCond %{DOCUMENT_ROOT}/html/%{HTTP_HOST}/\.html -f
RewriteRule ^(.*)$ html/%{HTTP_HOST}/\.html
thinkcmf伪静态,pathinfo模式处理
RewriteRule ^(.*)?$ index.php [E=PATH_INFO:$1,QSA,PT,L]
评论已关闭!