域名解析
修改网站Web服务器配置文件
----报错nginx: [warn] conflcting server name "j000e.com" on 0.0.0.0:443, ignored
----配置301重定向,将不带www的域名转为带www的域名
修改数据库域名
一直想要一个.com的域名,遂在namesilo购买了新域名j000e.com,替换原来的joooe.xyz.在操作前,先对服务器和数据库进行备份.
域名解析
将新购买的域名直接A
记录解析到vps的ip,www用CNAME
解析到@
(即主域名j000e.com),这里我已经给域名套了Cloudflare,所以解析配置直接在CF的DNS设置中填写即可,不需要改namesilo的任何参数.
修改网站Web服务器配置文件
我使用的是LNMP包,所以我的旧vhost配置文件在/usr/local/nginx/conf/vhost/joooe.xyz.conf
,如果现在vi /usr/local/nginx/conf/vhost/joooe.xyz.conf
并将其中的旧域名全都替换为新域名,网站就已经可以访问了,但是还要涉及到新域名的ssl,所以我放弃了原有的配置文件,先准备好新域名的ssl证书和密钥,如果没有单独准备,那么稍后可以使用lnmp自带的Let's Encrypt的ssl,准备好后lnmp ssl add
填写新域名,网站目录还填写/home/wwwroot/joooe.xyz
,开启rewrite,填写typecho,开启pathinfo,ssl根据情况选择,我使用了CF的证书则需要提供证书和密钥的绝对路径,然后配置即可完成,这时看/usr/local/nginx/conf/vhost/
下面多了一个新域名的配置文件j000e.com.conf
报错nginx: [warn] conflcting server name "j000e.com" on 0.0.0.0:443, ignored
但是两个配置文件同时存在,使用nginx -t
检查配置准确性时就会出现nginx: [warn] conflcting server name "j000e.com" on 0.0.0.0:443, ignored
这样的多条报警
这时需要新建一个文件夹,把旧配置文件放进去即可
cd /usr/local/nginx/conf/vhost/
mkdir oldconf
mv joooe.xyz.conf oldconf/
配置301重定向,将不带www的域名转为带www的域名
即将对j000e.com进行访问时转到www.j000e.com
直接在/usr/local/nginx/conf/vhost/joooe.xyz.conf
中的server字段末尾添加
if ($host != 'www.j000e.com'){
rewrite ^/(.*)$ https://www.j000e.com/$1 permanent;
}
即可,我的完整配置文件如下
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name www.j000e.com j000e.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/joooe.xyz;
ssl on;
ssl_certificate /home/wwwroot/j000e.com.pem;
ssl_certificate_key /home/wwwroot/j000e.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
include rewrite/typecho.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php-pathinfo.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log off;
if ($host != 'www.j000e.com'){
rewrite ^/(.*)$ https://www.j000e.com/$1 permanent;
}
}
修改数据库域名
进入mysql命令行,然后修改替换4个参数域名,分别执行
mysql -uroot -pXXXX
use typecho
UPDATE `typecho_users` SET `url` = replace (`url`,'https://www.joooe.xyz','https://www.j000e.com');
UPDATE `typecho_options` SET `value` = replace (`value`,'https://www.joooe.xyz','https://www.j000e.com');
UPDATE `typecho_comments` SET `url` = replace (`url`,'https://www.joooe.xyz','https://www.j000e.com');
UPDATE `typecho_contents` SET `text` = replace (`text`,'https://www.joooe.xyz','https://www.j000e.com');
exit
数据库名typecho
,新旧域名按需修改
在修改数据库旧url的时候我将一个命令分多次修改旧域名不同形式执行,如第一条update我使用https://www.joooe.xyz执行一次,再改成www.joooe.xyz执行一次,再改成joooe.xyz执行一次,应该可以替换掉所有旧域名,如图
注解:
UPDATE `cdb_name` SET `field_name` = replace (`field_name`,'from_str','to_str')
UPDATE `typecho_users` SET `url` = replace (`url`,'https://www.joooe.xyz','https://www.j000e.com');修改用户URL
UPDATE `typecho_options` SET `value` = replace (`value`,'https://www.joooe.xyz','https://www.j000e.com');修改站点URL
UPDATE `typecho_comments` SET `url` = replace (`url`,'https://www.joooe.xyz','https://www.j000e.com');修改评论中的URL
UPDATE `typecho_contents` SET `text` = replace (`text`,'https://www.joooe.xyz','https://www.j000e.com');修改文章中的URL
cdb_name(该字符或字符串所在表的名字)
field_name(该字符或字符串所在字段的字段名)
from_str(需要替换的字符串)
to_str(替换成的字符串)
最后检查哪些地方没有修改过来,自行修改.
-
版权声明:本文为原创文章,版权归Joe所有,转载请注明出处.
本文链接:https://www.j000e.com/linux/changedomain.html
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。