Apache Web使用多路处理模块,有三种处理模块:Prefork MPM、Worker MPM、Event MPM。Apache最常用的处理模块为Prefork MPM和Worker MPM(Apache默认使用Prefork MPM方式);Event MPM不支持HTTPS方式,官网也给出“This MPM is experimental,so it may or may not work as expected”,所以Event MPM很少被使用
rewrite规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转
1) 主要用途:
对搜索引擎优化(search engine optimization,SEO)友好,利于搜索引擎抓取网站页面隐藏网站URL真实地址,浏览器显示更加美观网站变更升级,可以基于rewrite临时重定向到其他页面2) Apache rewrite规则三个概念(rewrite结尾标识符、rewrite规则常用表达式、Apache rewrite变量)
Apache rewrite结尾标识符:用于规则末尾,表示规则的执行属性R[=code](force redirect):强制外部重定向
G(force URL to be gone):强制URL为gone,返回410HTTP状态码
P(force proxy):强制使用代理转发
L(last rule):匹配当前规则为最后一条匹配规则,停止匹配后续规则
N(next round):重新从第一条规则开始匹配
C(chained with next rule):与下一条规则关联
T=MIMI-type(force MIME type):强制MIME类型
NC(no case):不区分大小写
Apache rewrite规则常用表达式:主要用于匹配参数、字符串及过滤设置. 匹配任何单字符
[word] 匹配字符串word
[^word] 不匹配字符串word
abc|abcd 可选择字符串abc|abcd
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始的标志
$ 字符串结束的标志
\n 转义符标志
Apache rewirte变量:常用于匹配HTTP请求头信息、浏览器主机名、URL等代码:
HTTP headers:HTTP_USER_AGENT,HTTP_REFERER,HTTP_COOKIE,HTTP_HOST,HTTP_ACCEPT;
connection&request:REMOTE_ADDR,QUERY_STRING;
server internals:DOCUMENT_ROOT,SERVER_PORT,SERVER_PROTOCOL;
system stuff:TIME_YEAR,TIME_MON,TIME_DAY
详解:
HTTP_USER_AGENT:用户使用的代理,例如浏览器
HTTP_REFERER:告知服务器,从哪个页面来访问的
HTTP_COOKIE:客户端缓存,主要用于存储用户名和密码等信息
HTTP_HOST:匹配服务器ServerName域名
HTTP_ACCEPT:客户端的浏览器支持的MIME类型
REMOTE_ADDR:客户端的IP地址
QUERY_STRING:URL中访问的字符串
DOCUMENT_ROOT:服务器发布目录
SERVER_PORT:服务器端口
SERVER_PROTOCOL:服务器端协议
TIME_YEAR:年
TIME_MON:月
TIME_DAY:日
3) rewrite规则实战案例,以下配置均配置在httpd.conf中
将example.com跳转至www.example.comRewriteEngine on : 启用rewrite引擎
RewriteCond %{HTTP_HOST} ^example.com [NC] : 声明client请求的主机匹配以examole.com开头的域名,NC忽略大小写
RewriteRule ^/(.*)$ http://www.example.com/$1 [L] : ^/表示RewriteCond中匹配的内容,(.*)表示任意字符串,$1表示引用(.*)中的任意内容
转载于:https://www.cnblogs.com/longBlogs/p/9613562.html