建站日志 - WordPress搬运到阿里云共享虚拟主机

时间:2022-09-27 12:06:10

17.4.9

mysqldump

因为租用的阿里云服务器ECS到期了,着手将博客搬到更便宜的共享虚拟主机上。之前安装的环境是MySQL5.5.54,PHP5.5.9,Apache2;共享虚拟主机提供的环境是MySQL5.1以下,PHP5.5以下。因此MySQL使用mysqldump导出的时候,需要加上一个--compatible=mysql40的参数。

这样设置后导出的sql文件里中文全都是???,而不加--compatible参数导出的则能够正常显示。尝试再加上设置--default-character-set=utf8,中文就正常显示了。到MySQL4的mysqldump文档下查看,原来是这个原因:

    **MySQL 3.23, 4.0, 4.1 Reference Manual - 4.5.4 mysqldump**

    --default-character-set=charset_name

        Use charset_name as the default character set. See Section 9.6, “Character Set Configuration”. If no character set is specified, mysqldump from MySQL 4.1.2 or later uses utf8, and earlier versions use latin1.

本机数据库

MySQL重新导入的时候,共享虚拟主机只允许用户用分配的数据库用户和数据库名,因此需要修改导出的sql文件中开头的Create DATABASE <database_name>; USE <database_name>语句,以及修改WordPress的wp-config文件。

WordPress数据库中的wp_option表的homesiteurl需要修改,否则会使用原服务器的地址。若没有修改这两项就直接访问网站,跳转到原网址成功,再修改完当前数据库的wp-options表后 - 也需要到之前的服务器上的数据库那里修改它的wp_options的表中的homesiteurl。至少在我这里那边的也自动转成了我当前的地址,不知道是怎么触发的。

这样改来改去站点网址,到了用浏览器访问网站的时候,总会出现疑似的延迟的现象,还是会跳转到之前的设置。来回检查了几次之后,我发现首先需要排除的是:浏览器对于网址跳转的记忆功能。因为我换了新的没有访问过网址的浏览器就能顺利地使用我设置之后的网址了。

.htaccess

使用.htaccess将域名解析到子文件夹。WordPress数据库中的wp_posts表的guidpost_content中用REPLACE函数将原站点的地址更换为现在的主机地址。

内页均是空白。/wp_admin也无法进入。按照这篇文章的建议,在子文件夹中再建立一个.htaccess文件并输入以下内容:

RewriteEngine On
# 禁止通过非本网站域名访问
RewriteCond %{HTTP_HOST} !^(www.)?aaa.com$ [NC]  #改
RewriteRule ^.*$ [L,r=404]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . site1/index.php [L] #改了这一行
</IfModule>

# END WordPress

没有效果。

【过段时间再来看.htaccess的用法吧orz

Warning: Cannot modify header information

打开wp-config文件将WP_DEBUG开启,浏览器进入/wp_admin页面上显示错误信息:


Notice: register_sidebar_widget is deprecated since version 2.8.0! Use wp_register_sidebar_widget() instead. in /data/home/***/htdocs/wordpress/wp-includes/functions.php on line 3829

Warning: Cannot modify header information - headers already sent by (output started at /data/home/***/htdocs/wordpress/wp-includes/functions.php:3829) in /data/home/***/htdocs/wordpress/wp-includes/pluggable.php on line 1179

将根目录和子文件夹里的.htaccess的内容都删掉,改数据库中相应值。可以进入内页,但所有包括主页的顶端都有以上错误信息提示。/wp-admin无法进入并报如同以上的错误。手动/wp-login.php也是同样。

...将php.ini中的output_buffering - 『输出缓冲区』从禁用改为启用,就不再报Warning那一行的问题,只有Notice的deprecated的提示,不影响使用。