在example.com/blog/和m.example.com/blog/上显示WordPress

时间:2011-08-24 08:37:28

标签: wordpress dns

我希望在移动子域中显示相同的WordPress博客,并在子文件夹中显示主域。这看起来如下:

  • example.com/blog/(包含主题和自定义)
  • m.example.com/blog/(包含移动主题和自定义)

但是,这是可能的,还是我需要在主博客上安装一个单独的博客并将内容复制到移动博客上?

PS - 这是此阶段的测试环境,我将处理用户代理切换和SEO重复内容注意事项。

1 个答案:

答案 0 :(得分:0)

这是可行的,但你没有简单的不显眼的解决方案。

有一种简单的方法可以做到这一点。破解核心,在wp_set_wpdb_vars()中找到wp-includes/load.php,然后在$prefix = $wpdb->set_prefix( $table_prefix );之后添加:{/ p>

if($_SERVER['SERVER_NAME'] == 'm.domain.tld'){
    $wpdb->options = "mobile_{$wpdb->options}";
    $wpdb->postmeta = "mobile_{$wpdb->postmeta}";
    $wpdb->commentmeta = "mobile_{$wpdb->commentmeta}";
}else{
    $wpdb->options = "mobiless_{$wpdb->options}";
    $wpdb->postmeta = "mobiless_{$wpdb->postmeta}";
    $wpdb->commentmeta = "mobiless_{$wpdb->commentmeta}";
}

这个技巧会将沙箱options and metas分成两组不同的表。这样他们就不会覆盖但是如果你对安装的插件使用不同的设置。如果您可以控制插件并防止设置冲突,则可以对options table进行沙箱化。

wp-config.php中,您需要执行此操作:

if($_SERVER['SERVER_NAME'] == 'm.domain.tld'){
    require_once(dirname(__FILE__).'/wp-config-mobile.php');
}else{
    require_once(dirname(__FILE__).'/wp-config-mobiless.php');
}

两者必须具有相同的设置(dbname,prefix)WP_SITEURLWP_HOME除外。如果您未在wp-config.php中难以定义WP_HOMEWP_SITEURL,则可以使用一个文件。