当前位置:首页 > Web开发 > 正文

这个一般也会加上

2024-03-31 Web开发

标签:

一、rewrite重写

mod_rewrite 供给了基于法则动态改削传入的请求的 URL 的要领。可以界说任意的的url映射到内部的站点文件中

1演示现象,解决效果,得出rewrite观点

2-1如何实现具体讲解法式,可以带入道理

2-2实践

3分解实现道理,提升常识面

4小结

1、rewrite需求

我们在使用Apache做为Web处事器时,有时候出于SEO优化或者是url路径的简洁,需要将输入的url转换成更为友好的url,这时候就可以使用rewrite重写成果。

rewrite还可以实现防盗链,域名跳转

使用rewrite前:article/php?ip=1 使用rewrite后: article/1.html

使用rewrite成果首先需要开启mod_rewrite模块。yum安置的apache默认已经开启。

2、rewrite使用详解

rewrite法则可以在Directory指令中进行配置

rewrite学习的三个核心是RewriteEngineRewriteCondRewriteRule

2.1 RewriteEngine

rewrite成果的总开关,用来开启rewrite重写成果

RewriteEngine on 2.2 RewriteCond

RewriteCond界说法则条件,当请求满足RewriteCond配置的条件时,执行RewriteCond后面的RewriteRule语句

好比:

RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.* RewriteRule index index.html

上面的法则暗示:如果匹配到http请求中HTTP_USER_AGENT是Mozilla//5/.0.*开头的。访谒index时,会自动访谒到index.html

RewriteCond 和 RewriteRule 是上下对应的关系。可以有1个或者好几个RewriteCond来匹配一个RewriteRule

**RewriteCond常见的HTTP请求匹配方法

RewriteCond %{HTTP_REFERER} () RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.* RewriteCond %{REQUEST_FILENAME} !-f

HTTP_REFERER

判断访谒者的来源

案例:

RewriteCond %{HTTP_REFERER} () RewriteRule (.*)$ mytest.html # 如果访谒的上一个页面是,无论当前访谒的是哪个页面,城市跳转到mytest.html

REQUEST_FILENAME

匹配当前访谒的文件

案例:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^news/sports/(\d+)\.html web/index\.php?c=news&a=sports&num=$1 [QSA,NC,L] # 访谒news/sports/123.html,真实访谒的是web/index.php?c=news&a=sports&num=123

-d是否是一个目录,判断是否不是一个目录:!-d

-f是否是一个文件,判断是否不是一个问价:!-f

$1暗示第一个参数

2.3 RewriteRule

RewriteRule是共同RewriteCond一起使用的,RewriteRule是RewriteCond告成匹配后的具体执行过程

RewriteRule的写法:

RewriteRule Pattern Substitution [flags]

Pattern是一个正则匹配

Substitution匹配的替换内容

[flags]参数限制

[QSA]qsappend(追加盘问字符串)的意思,次符号强制重写引擎在已有的替换字符串中追加一个盘问字符串,而不是简单的替换。如果需要通过重写法则在请求串中增加信息,就可以使用这个符号。

NCnocase(忽略巨细写)的意思,,它使Pattern忽略巨细写,也就是在Pattern与当前URL匹配时,"A-Z"和"a-z"没有区别。这个一般也会加上,因为我们的url自己就不区分巨细写的。

Rredirect(强制重定向)的意思,适合匹配Patter后,Substitution是一个http地点url的情况,就调解出去了。

Llast(结尾法则)的意思,就是已经匹配到了,就当即遏制,不再匹配下面的Rule了,类似于编程语言中的break语法,跳出去了。

二、apache日志切割 1、为什么要进行日志切割

跟着网站访谒越来越大,web处事孕育产生的日志文件也会越来越大,这个时候日志文件不只占用了大量的处事器空间,而且日志分析也很麻烦

2、日志支解两种方法 2.1 rotatelogs

rotatelogs是apache自带的日志切割工具

案例:使用rotatelogs每天记录一个日志文件

# 编纂httpd主配置文件 /etc/httpd/conf/httpd.conf # 注释下面两行 ErrorLog "logs/error_log" CustomLog "logs/access_log" combined # 添加下面两行 ErrorLog "|/usr/sbin/rotatelogs -l logs/error_%Y%m%d.log 86400" CustomLog "|/usr/sbin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined

说明:

86400为轮转的时间,单位为秒

2.2 cronolog

Cronolog是一款日志轮循(rotation)工具,可以用它来把Apache、Tomcat等Web处事器上输出的日志切分成按日或月生存的文件。

cronolog安置

[[email protected] ~]# tar zxf cronolog-1.6.2.tar.gz [[email protected] ~]# cd cronolog-1.6.2/ [[email protected] cronolog-1.6.2]# ./configure && make && make install

案例:使用cronologs每天记录一个日志文件

ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log" CustomLog "|/usr/local/sbin/cronolog logs/access-%Y%m%d.log" combined

扩展:按小时轮询生成日志

CustomLog "|/usr/local/sbin/cronolog logs /access_%Y%m%d%H.log" combined 3 总结

保举使用cronolog,因为cronolog不变高配置简单。

三、apache防盗链

防盗链就是防备别人网站代码里挪用我们处事器的图片、文件、视频等资源。如果别人盗用我们的资源,会增加处事器的贷款压力。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33166.html