将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