这篇文章解决两个问题:301跳转设置和跳转过程中的源站 IP 隐藏。环境:Linux + Apache + WordPress,尤其是使用 wdCP 的朋友注意下,没有必要再在面板里新建网站。
一、主流跳转需求
301跳转直接解决的问题是:带 www 的域名跳转到不带 www 的域名,或反过来。
有用心建站的站长都绕不开这个话题,网上搜到的 Apache 下的 Rewrite 写法有一堆,让人犯昏。在这里,我放几个亲测有效的,用法是将规则加入到网站根目录的 .htaccess 文件。
带 www 跳转不带 www:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^geekufo.com$ [NC]
RewriteRule ^(.*)$ http://geekufo.com/$1 [L,R=301]
不带 www 跳转带 www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^geekufo.com [NC]
RewriteRule ^(.*)$ http://www.geekufo.com/$1 [L,R=301]
Http 强制跳转 Https:
RewriteCond %{HTTPS} !on [NC]
RewriteRule (.*) https://geekufo.com%{REQUEST_URI} [R=301,NC,L]
不要忘了在 WordPress 后台「设置」-「常规」中,把「wordpress地址(URL)」和「站点地址(URL)」改成要跳转网址。
二、注意大坑
网上一些关于 wdCP 或其他面板下做 301 跳转的教程有大坑,以前我在搜索关键词“ wdCP 301”找资料时遇到过,由于很多面板都自带 301 跳转选项,这些教程无一不是说要在里面新建、绑定、勾选balabalabala,过程之繁琐,原因也含糊,最后逻辑可以归结为: 把 301 跳转当成新建网站的域名解析来做,跳转前的域名解析到源站 IP。
千万别这么干,已经这么干了赶快改!
我们用中国站长之家的 HTTP 状态查询工具看看正常的 301 跳转是什么样的:
可以看到 www 跳转无 www 的极客飞船,返回状态码 301,而使用了 CDN 的情况下服务器 IP 为 CDN 的分发节点 IP。
如果,极客飞船将 301 跳转请求直接交由源站处理,那么将返回状态码 200 和源站 IP。
这样,辛苦搭建的 CDN 将直接失去它的掩护作用,源站 IP 也会暴露在他人眼皮底下。
三、正确姿势
想要强化服务器安全, CDN 是把利器,如果还不了解什么是 CDN 可以看看:网站CDN搭建方法和缓存策略分享
以本站为例,接下来,在 CDN 中将两种域名都添加上,
在域名解析处将两种域名类型都接入 CDN,
由于极客飞船是主@主机记录,即主域名不带 www,所以 www.geekufo.com 在 CDN 无需做缓存。
完工,逻辑简单粗暴:CDN 冲在前头,形成「客户端 — CDN — 源站」的结构。
今天真冷,哈哈!
我只是来看一看,好久没来了~
测试邮箱回复
看看能不能收到邮件回复
收到了
有个问题cdn https 301跳转三项能同时存在吗
不好意思,刚才在测试邮件自动提醒,点错测试对象了 -_-||
这个规则是 Apache 的,我现在已换成 Nginx ,不过当时 HTTP 强制 HTTPS 一直都是有效的,不知你是什么环境。
然后,cdn、https、301 可以同时存在,通常完成度高网站这三个都是共存的。
看得不太明白,比如域名是A.com,主域名使用A.com,那么先给A.COM做了CDN,另外再开一个WWW.A.COM,也再做一个CDN吗?
是的,这样访问 http://www.a.com 时才不是由源站直接到 a.com,过一层 CDN 更安全些。