以前给Wordpress网站换域名没有考虑过老域名还要301重定向的事情,因为老域名直接不用了,这次更换就遇到这个问题了,老域名还是继续要用,所以就得考虑301的问题了。
先再说下Wordpress更换域名的过程:
1、后台用插件替换
1.1、先到网站后台的常规设置去换成自己的新域名。
1.2、然后用我们开源的插件:WPBReplace 再去批量替换剩下网址就行。
WPBReplace下载:https://www.jingxialai.com/4251.html
2、数据库替换
直接到phpMyAdmin里面去执行下面的sql命令:
UPDATE wp_options SET option_value = REPLACE(option_value, 'https://旧域名', 'https://新域名'); UPDATE wp_posts SET post_content = replace( post_content, 'https://旧域名', 'https://新域名'); UPDATE wp_posts SET guid = replace( guid, 'https://旧域名', 'https://新域名'); UPDATE wp_postmeta SET meta_value = replace(meta_value, 'https://旧域名', 'https://新域名');
3、老域名https做301跳转规则
准备工作:老域名的ssl证书,如果是换服务器了,老域名也要解析到新服务器上。
这里是nginx的规则,在你的网站nginx文件里面新增一个443端口监听,我这里的规则只是演示,具体根据你自己的改。
上面的server是你新域名的正常规则,只是在下面新增一个server,用于老域名的跳转。
server { listen 80; listen 443 ssl http2; server_name www.新域名.com; ssl_certificate /usr/local/ssl/www.新域名.com.crt; ssl_certificate_key /usr/local/ssl/www.新域名.com.key; #其他规则 } server { listen 443 ssl http2; server_name www.老域名.com; ssl_certificate /usr/local/ssl/www.老域名.com.crt; ssl_certificate_key /usr/local/ssl/www.老域名.com.key; if ($host = www.老域名.com) { return 301 https://www.新域名.com$request_uri; } }
老域名也可以加上80端口,主要是看你之前的网站规则是怎么样的。
也可以用rewrite规则:
if ($host = www.老域名.com) { rewrite ^(.*)$ http://www.新域名.com/$1 permanent; }
当然推荐用return,return更高效,rewrite会额外增加一次请求,它们的区别查看:https://www.jingxialai.com/4502.html
用nginx -t检查一下规则,如果没问题,就重启nginx,现在你的老域名https,就能正常跳转到新域名的https了。
现在查看浏览器状态或者找个工具查询老域名的http状态,应该就是301了。
如果你老域名没有用ssl证书,不是https,就不用这么麻烦了,只需要一个server就行:
server { listen 80; listen 443 ssl http2; server_name www.新域名.com www.老域名.com; ssl_certificate /usr/local/ssl/www.新域名.com.crt; ssl_certificate_key /usr/local/ssl/www.新域名.com.key; if ($host != www.新域名.com) { return 301 $scheme://www.新域名.com$request_uri; } #其他规则 }
Apache规则:https://www.jingxialai.com/1028.html 不过这是我2015年写的,不知道规则现在还能不能用。
4、域名解析的方式做301跳转
这个方式更简单,只需要去加个域名解析就行了,但是不推荐!
国内域名做301网址跳转解析,也就是显性url转发,需要你域名已经实名,并且转发的网址需要已经备案。
国外域名301跳转一般叫:Web Redirect
解析商提供的转发没有用nginx规则灵活,并且可能出现不稳定、请求延迟的情况。