Fork me on GitHub

http重定向https

将http请求转发至https的URL
  重定向
    Redirect [status] URL-path URL
  status状态:
    Permanent: 返回永久重定向状态码 301
    Temp:返回临时重定向状态码302. 此为默认值
  示例:
    Redirect temp / https://www.magedu.com/

从客户端发送浏览请求--至服务器--从服务器回复一个重定向的网页地址到客户端---从客户端发送请求到服务器--从服务器回复请求,通过四次完成一整次访问

 1 vim /etc/httpd/conf/httpd.conf 
 2  ----
 3 
 4 <virtualhost *:80 >
 5 DocumentRoot /data/asite
 6 CustomLog "logs/asite_access_log" combined
 7 servername www.a.com
 8 <directory "/data/asite">
 9 Require all granted
10 </directory>
11 redirect Permanent / http://www.b.com
12 </virtualhost>
13 --------
14#在a网站的语句块的配置文件中添加这行,表示当你访问根的时候,跳转到www.b.com
15 systemctl restart httpd
16#重启服务

通过curl命令测试:只显示了301 ,curl 命令默认只发一次请求,不会主动发第二次请求,重定向需要发第二次请求的

1 curl  http://www.a.com
2 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
3 <html><head>
4 <title>301 Moved Permanently</title>
5 </head><body>
6 <h1>Moved Permanently</h1>
7 <p>The document has moved <a href="http://www.b.com">here</a>.</p>
8 </body></html>
1 curl  -L http://www.a.com
2 b.site

curl命令默认只发送一次请求,-L会根据用户发过来的响应码在执行操作,如301就会在发送一次请求跳转到对应的网站上

一般从http跳转到https都是用的临时重定向

1 <virtualhost *:80 >
2         DocumentRoot /data/asite
3                 CustomLog "logs/asite_access_log" combined
4         servername www.a.com
5 <directory "/data/asite">
6         Require all granted
7 </directory>
8 redirect temp / https://www.a.com
9 </virtualhost>

 #搜索引擎会根据永久重定向来抓取页面,临时重定向会抓取,永久重定向不会抓取旧的网站

直接在配置文件中将http跳转到https会产生循环

DocumentRoot "/var/www/html"
redirect temp / https://www.a.com
多主机的模式可以用这种,
curl -Lk http://www.a.com
curl: (47) Maximum (50) redirects followed
1 vim /etc/httpd/conf/httpd.conf
2----
3 RewriteEngine on
4 RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
5 #RewriteEngine on重写引擎
6 #RewriteRule重写规则, ^(/.*)$ 头尾中间/任意字符,表示访问这个网站的任意字符串,给你重定向到https://%{HTTP_HOST},HTTP_HOST就是你访问的主机头,$1后项引用,使用302临时跳转

重新测试:

1 curl -Lk http://www.a.com
2 www.alex.com

 

posted @ 2021-03-26 18:12  Alex-Lzy  阅读(1589)  评论(0编辑  收藏  举报