WordPress迁移到子域由不正确的路径损坏

时间:2016-03-16 04:02:44

标签: mysql wordpress .htaccess config

我正在开发一个涉及将WordPress安装从A点迁移到B点的项目。它应该相当简单,但手动或基于插件的传输都不起作用。解释:

A点是'demo.com'的相当标准的安装,我正在尝试将其迁移到子域(B点),比如'c.example.com'。当然,我可以很好地迁移代码,插件,主题等,但是当我带来数据库时,一切都变得混乱(我已经对站点URL /主页URL /数据库中的一些永久链接结构进行了更新)。 / p>

<head>标记内的代码片段显示了一些有趣的信息:

<link rel="stylesheet" id="parent-style-css" href="http://c.#wp-content/themes/Example_theme/style.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="style-css-css" href="http://c.#wp-content/themes/Example_theme/style.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="layout-css" href="http://c.#wp-content/themes/Example_theme/css/layout.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="main-css" href="http://c.#wp-content/themes/Example_theme/css/main.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="shortcodes-css" href="http://c.#wp-content/themes/Example_theme/css/shortcodes.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="mediaelement-css" href="http://c.#wp-includes/js/mediaelement/mediaelementplayer.min.css?ver=2.18.1" type="text/css" media="all">
<link rel="stylesheet" id="prettyPhoto-css" href="http://c.#wp-content/themes/Example_theme/css/prettyPhoto.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="responsive-css" href="http://c.#wp-content/themes/Example_theme/css/responsive.css?ver=4.4.2" type="text/css" media="all">
<link rel="stylesheet" id="instag-slider-css" href="http://c.#wp-content/plugins/instagram-slider-widget/assets/css/instag-slider.css?ver=1.2.1" type="text/css"

仔细观察,您可以看到href / path不包含'example.com'域名,而是替换为“#”。

http://c.#wp-content/themes/Example_theme/css/responsive.css?ver=4.4.2

进一步说明,我更新了wp-config文件以定义WP_HOME和WP_SITE URL,这没有任何效果。 .htaccess也针对子域进行了更正(另外没有效果),它显示为:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /c/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . //index.php [L]
</IfModule>

# END WordPress

这个原因似乎是数据库中的某处,但是某个地方可能存在一个控制它的文件。

欢迎任何帮助,非常感谢。

再次感谢您抽出我的时间。

1 个答案:

答案 0 :(得分:0)

首先,从头开始尝试。清理所有子域文件&amp;数据库。然后,将所有example.com文件复制到子域。之后,导出所有SQL数据库(与wp安装相关)&amp;将其导入子域的数据库。

之后编辑wp-config.php&amp;将相关信息放在这些行中:

define('DB_NAME', 'your_db_name');
/** MySQL database username */
define('DB_USER', 'your_subdomains_db_user');

/** MySQL database password */
define('DB_PASSWORD', 'your_subdomains_db_pass');

/** MySQL hostname */
define('DB_HOST', 'localhost');

...

$table_prefix  = 'your_subdomain_db_table_prefix';

在该操作之后使用此脚本https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

您需要做的就是将其复制到您的子域中,访问它的主文件&amp;使用它将“example.com”的所有数据库条目替换为“c.example.com”。

这就是全部,之后您应该在子域中拥有example.com的全功能WP副本。

此外,您可以阅读代码以获取更多信息https://codex.wordpress.org/Moving_WordPress