京东换域名(apache)

七 URL重写与防盗链什么是url重写?url重写指的就是将一个进入的URL请求重写成网站可以处理的另一个URL请求的过程,比如说现在我们接触到的很多网站都更换域名了,如qq和京东,qq以前的域名的是www.tencent.com而不是现在的www.qq.com,京东以前的域名是www.360buy.com现在是www.jd.com。域名更换之后,网站是没有办法通知用户的, 这个时候就需要使用url重写,同时这个url重写还具有防盗链功能URL重写环境:两台安装CentOS8的linux主机,关闭selinux,关闭防火墙,并且都安装了apache服务192.168.98.200 www.a.com192.168.98.201 www.b.com检查功能是否开启[root@manage01 ~]# cd /etc/httpd/conf.modules.d/
[root@manage01 conf.modules.d]# grep rewrite *.conf
00-base.conf:LoadModule rewrite_module modules/mod_rewrite.so在主配置文件最后添加两行RewriteEngine ON
RedirectMatch ^/$ http://www.b.com
IncludeOptional conf.d/*.conf保存后重启apache服务[root@manage01 conf.modules.d]# systemctl restart httpd修改/etc/hosts文件(也可以配置dns)192.168.98.200 www.a.com
192.168.98.201 www.b.com在www.b.com主机上生成测试页面[root@node1 ~]# echo "this is url rewrite" > /var/www/html/index.html
[root@node1 ~]# systemctl restart httpd打开浏览器访问www.a.com测试,可以看到由192.168.98.201主机提供的页面防盗链想一下正常服务器上的数据谁都可以拿 但是如果有人恶意去拿数据呢?或者说如果有人在自己的网站上做了一个连接 把你的网站的内容连接到他自己的网站上怎么办?你一打开他的网站就能看到你的网站的内容,收益是他的 流量是你的 而流量是要花钱的,这种做法叫盗链 所以我们要对自己的网站进行防盗链方面的设置环境准备三台安装CentOS8的主机,两台安装apache,关闭防火墙和selinux192.168.98.200 www.a.com192.168.98.201 www.b.com192.168.98.202 测试机三台主机修改/etc/hosts文件,加入对应内容,也可以使用DNS[root@node2 ~]# cat /etc/hosts
192.168.98.200 www.a.com
192.168.98.201 www.b.com192.168.98.201[root@node1 ~]# cat /var/www/html/index.html
<html>
<title>thief</title>
<body>
<h1> I AM A THIEF </h1>
<a href="http://192.168.98.200/a.jpg">thief thief</a>
</body>
</html>192.168.98.200[root@manage01 html]# cat /var/www/html/index.html
<html>
<title>this is a test</title>
<body>
<h1> test test test </h1>
<img src="a.jpg">
</body>
</html>
[root@manage01 html]# cat /var/www/html/err.html
thief?
[root@manage01 html]# ls /var/www/html/
a.jpg err.html index.html在192.168.98.200上使用tcpdump抓包,在测试主机上使用浏览器访问www.b.com点击盗链连接tcpdump -nn -vvv -s 1500 -w /tmp/http host 192.168.98.200 and port 80使用wireshark查看的时候会发现请求头当中多了一个我们之前没有见过的字段Referer,如果出现了这个字段就意味着客户不是直接访问你的网站的,而是从别人的网站那推荐过来的。所以我们利用防盗链功能直接屏蔽掉就可以了在192.168.98.200上修改配置文件[root@manage01 html]# vim /etc/httpd/conf/httpd.conf

RewriteEngine On
#打开重写引擎
#通过RewriteCond定义匹配条件
RewriteCond %{HTTP_REFERER} !^$
#referer字段为非空的,不是空的就意味着不是直接访问的,!=非 ^=开头,$=结尾
RewriteCond %{HTTP_REFERER} !a\.com/.*$ [NC]
#为非a.com的,a.com是自己
RewriteCond %{HTTP_REFERER} !127.0.0.1/.*$ [NC]
#不是127.0.0.1的
RewriteCond %{HTTP_REFERER} !192.168.98.200/.*$ [NC]
#不是192.168.98.200的
RewriteCond %{HTTP_REFERER} !www\.a\.com/.*$ [NC]
#不是www.a.com的
RewriteRule .*\.(gif|jpg)$ http://www.a.com/err.html [R,NC,L]
#定义重写规则,也就是说不是直接访问的,不是自己访问自己的,剩下的所有访问我的.gif .jpg结尾的都重写为a.com下的err.html
IncludeOptional conf.d/*.conf

#标记的含义
R 强制重定向,也就是在URL中加入指定的字符串
F 禁用URL,会返回403代码
L 当前规则是最后一条规则,不再继续匹配
NC 不区分大小写
[root@manage01 html]# systemctl restart httpd打开测试机了浏览器进行测试,访问www.b.com点击盗链连接,你会看到之前err.html页面的内容总结URL重写的作用防盗链的作用如何实现URL重写和防盗链3分钟了解计算机发展历史-组团学重点:URL重写的实现方式,防盗链如何实现难点:理解重写和防盗链的使用场景,记住实现过程中需要用到的字段

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/27348.html