实验环境
第一台centos7源码安装apache2.4.38 IP 192.169.1.13 关闭防火墙
一.rewrite跳转
Rewrite主要的功能就是实现URL的重写。它的正则表达式是基于Perl语言,入站的规则用于修改 HTTP 请求 Url。这些规则可以为以下几个目的,如演示对用户更加友好的 URL 命名空间为您的 Web 站点,将请求的 Url 重定向到新位置,或阻止访问 Url 来提供服务。
简单来说,作用就是,例如输入baidu.com实际上跳转跳转到了www.baidu.com,这就是rewrite跳转, 只是对用户访问的URL更加友好
本例网站域名为www.ajbn.com,例如的访问ajbn.com.cn,或者ajbn.com都跳转到www.ajbn.com
1.安装rewrite模块
就使用DOS模式安装了,你在源码编译的时候 --enable-rewrite方式不过编译的时候安装的,检测不出来,最好使用DOS安装一次
[root@apache1 ~]# apxs -c -i -a /root/httpd-2.4.38/modules/mappers/mod_rewrite.c
[root@apache1 ~]# apachectl -M | grep rewriterewrite_module (shared)
#DOS安装方式
2.修改配置文件
跳转可以基于指定某个虚拟主机,和基于某个指定目录,我们这里做全局配置,就是所有目录,和所有虚拟主机生效
进入主配置文件修改参数
[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf
搜索Group 关键单词,在下面添加如下内容
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.ajbn.com [NC]
RewriteCond %{HTTP_HOST} !^192.168.1.13 [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.ajbn.com/ [L]
解释一下
RewriteEngine on `:开启rewrite跳转
RewriteCond %{HTTP_HOST} !^www.ajbn.com [NC]
:表示客户端访问的域名(主机头)不是www.ajbn.com, [NC]意思是忽略客户端访问域名大小写
RewriteCond %{HTTP_HOST} !^192.168.1.13 [NC]:
表示客户端不是用192.168.1.13IP访问的,这里[NC]没什么作用
RewriteCond %{HTTP_HOST} !^$ :
访问域名(主机头)不为空的`
RewriteRule ^/(.*) http://www.ajbn.com/ [L] :
表示如果客户端访问的域名(主机头),复合上面条件,则直接跳转到www.ajbn.com ,[L]:这是最后一条规则,匹配到这里就停止
[root@apache1 ~]# echo "<h1>God Bye</h1>"
>> /usr/local/httpd/htdocs/index.html
[root@apache1 ~]# /etc/init.d/apache restart
3.修改两点hosts文件
模拟公网环境,这些域名都被注册
首先是服务器本身
[root@apache1 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.13 www.ajbn.com
192.168.1.13 ajbn.ajbn.com
192.168.1.13 ajbn.com
192.168.1.13 ajbn.com.cn
客户端
使用真机windows就可以,C:\Windows\System32\drivers\etc 有一个hosts文件,用记事本打开,滑倒最后,添加如下内容,并保存
如果保存的时候显示是另存为,不可以,就把这个文件拖到桌面,然后修改,在拖回去,覆盖
4.访问测试
浏览器访问测试ajbn.ajbn.com或刚刚hosts写的任意一个地址
已经跳转了,如下
二.配置防盗链
防盗链的概念
就是说假如一个图片我的网站上没有,而其他网站上有,当客户机访问我网站上的这个图片的时候,自动给客户机返回一个URL,而这个URL是其他人网站的,客户端自动就去指定网站了访问了,
客户端看不到这个过程,实际上一直还是在我的网站上,浪费了他人网站的带宽,骗取了浏量
防盗链就是为了,拒绝转发过来的这种连接,而返回一个自己定义资源,不会影响正常连接
1.模块
还是上面的机器
防盗链,需要安装并开启rewrite模块,我们上面DOS安装时默认就开启了就不开了,就是如下,进到httpd.conf中
LoadModule rewrite_module modules/mod_rewrite.so
2.修改配置文件
我们这里也是做全局的,最所有目录,和虚拟主机生效
[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf为防止干扰,把我们上面添加的rewrite的语句都删了,添加如下语句,还是关键词Group下面
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !ajbn\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !www\.ajbn\.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.ajbn.com/2.jpg [R,NC,L]
解释RewriteEngine on
:开启rewrie跳转,必须要开启,否则无法实现RewriteCond %{HTTP_REFERER} !^$
:主机头不是空的RewriteCond %{HTTP_REFERER} !ajbn\.com/.*$ [NC]
:主机头不是ajbn.com,[NC]忽略主机头大小写的意思RewriteCond %{HTTP_REFERER} !www\.ajbn\.com/.*$ [NC] :
主机头不是www.ajb.comRewriteRule .*\.(gif|jpg|swf)$ http://www.ajbn.com/2.jpg [R,NC,L]
:满足上述条件的,返回自己指定的一张图片,不符合上述条件返回正确的图片
[R] 是强制跳转的意思 [L] 这是最后一条规则
(gif|jpg|swf) 和后面的网站和路径的意思是,就是如果本网站上这些格式的资源,被盗用,则返回自己指定图片2.jpg,如果不是这些格式则正常显示被盗用图片
3.准备两张内容不一样的jpg格式图片
在windows中命名为1.jpg 和 2.jpg 上传到apache服务器的/usr/local/htdocs/下
1.jpg作为被盗图片,2.jpg作为返回图片
[root@apache1 htdocs]# /etc/init.d/apache restart
4.再开启一台虚拟机作为盗用图片机器
再开启一台centos7,IP 192.168.1.14 ,关闭防火墙,yum安装httpd服务
[root@apache2 ~]# yum -y install httpd
[root@apache2 ~]# cd /var/www/html/
[root@apache2 html]# ls
[root@apache2 html]# vim index.html<h1>盗取图片测试 </h1>
<a href="http://www.ajbn.coim/1.jpg">测试</a>
5.测试盗取图片
访问192.168.1.14,并点超链接,
访问的是1.jpg,显示的是2.jpg的内容,因为这种属于经过网站转发的连接,就是所说的盗图片,就会显示我们上面指定的图片如果提示重定向过多,或者显示的是1.jpg就是浏览器的问题,多换几个浏览器试一试就可以
正常访问1.jpg而不经过网站的转发(盗)不会出问题
实验成功 !!
来源:CSDN
作者:!#阿杰邦尼
链接:https://blog.csdn.net/weixin_45308292/article/details/104690423