HTTP 301重定向

| 分类 网络 

最近在考虑改变域名的问题,目前博客使用的是blog.xulihang.me这一域名,想转换到xulihang.me。但其实前者已经有了不错的权重,没有必要迁移。

不过,我还是研究了一下,怎么把让xulihang.me的访问跳转到blog.xulihang.me。

主要使用的是HTTP 301状态码,表示永久迁移,这样搜索引擎会把xulihang.me和blog.xulihang.me看做一个网站。

我的xulihang.me解析到一台VPS,开了http服务,但因为没有什么内容,就简单地给首页添加了一段JavaScript,3秒后进行跳转:

var i = 3; 
var intervalid; 
intervalid = setInterval("fun()", 1000); 
function fun() { 
    if (i == 0) { 
        top.location.href='https://blog.xulihang.me';
        clearInterval(intervalid); 
    } 
    document.getElementById("mes").innerHTML = i; 
    i--; 
} 

这样的不足之处是返回的状态码不是301,真的迁移域名的话是不合适的。

这里,我使用lighttpd的url.redirect进行跳转。添加以下代码到lighttpd.conf:

$HTTP["host"] =~ "^[a-z]*\.*(.*)$" {
  url.redirect = ( "^/(.*)" => "https://blog.xulihang.me/$1" )
}

这样,xulihang.me或者www.xulihang.me这样的域名都会自动跳转到blog.xulihang.me。并且状态码是301。以下是curl的结果:

root@ip-172-31-35-138:/etc/letsencrypt/live/xulihang.me# curl -v xulihang.me
* Rebuilt URL to: xulihang.me/
*   Trying 18.223.21.100...
* TCP_NODELAY set
* Connected to xulihang.me (18.223.21.100) port 80 (#0)
> GET / HTTP/1.1
> Host: xulihang.me
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: https://blog.xulihang.me/
< Content-Length: 0
< Date: Wed, 22 May 2019 08:17:27 GMT
< Server: lighttpd/1.4.45
<
* Connection #0 to host xulihang.me left intact

另外,我还考虑了HTTPS的问题。可以使用Let’s encrypt的免费证书。

这里,我之前使用了ocserv,会占用443端口。不过好在我使用docker运行的ocserv,可以较为方便地将443映射到其它端口。

具体操作可以参考这篇文章:lighttpd支持HTTPS

获得的证书90天后过期,到时候重新运行一遍就行了。

参考链接:

其它服务器程序的配置方法:

nginx: https://www.nginx.com/blog/creating-nginx-rewrite-rules/


上一篇     下一篇