设置带有三级域的WordPress网络

时间:2011-03-18 作者:Zypher

我一直在考虑安装WordPress网络。一切都进行得很顺利,直到我达到了我想要的域布局不合适的地步。

我希望有如下布局:

博客。*。stackexchange。com公司

例如,我希望在一个网络中有多个站点,如下所示:

博客wordpress。stackexchange。com博客。苹果stackexchange。com博客$地点stackexchange。com公司

我认为我可以通过一些创造性的重写规则和手动DNS干预来实现这一点,但我更希望有一个设置,可以将DNS以外的所有内容的创建交给其他人(我们已经有了一个自动创建DNS所需所有子域的过程)

从我的游戏和阅读中,WP确实希望站点成为下一级域,因此在我上面的示例中,它希望主要的WP博客位于stackexchange。com和wordpress的网络博客。stackexchange。com。

有没有什么方法可以达到我想要的效果,或者我应该走写博客的路线。stackexchange。com/$站点?

2 个回复
最合适的回答,由SO网友:Wietse Venema 整理而成

您可以使用Domain Mapper 此插件。缺点是您需要手动配置每个子博客。

SO网友:Otto

你可以通过定制的日出来实现这一点。php文件。这基本上就是域映射插件的工作方式,但是它有一个很好的前端。对于自定义的东西,您可以编写一些简单的PHP来完成基本相同的事情。

multisite的本质是确定要为哪个站点提供服务。域映射插件通过创建wp\\u Domain\\u映射表并将信息存储在其中来实现这一点。因此,当它收到xxx的请求时。com,它在该表中查找,并看到它对应于blog\\u id 123。

首先,进行WordPress设置,并使其成为多站点。不管它真正生活在哪里,因为我们将改变这一切。为了简单起见,我把它放在博客上。stackexchange。com并使其成为子目录类型的站点(这些站点更容易)。创建的子目录可能是slug/wordpress,/苹果,/随便什么。

所以,是的,首先,你确实在博客上直播。stackexchange。com/wordpress。将此视为您的暂存环境。创建每个站点时,可以在此处对其进行操作,直到您决定打开映射为止。

要自己进行域映射,在没有插件的情况下,可以执行以下操作:

第一步:添加define( \'SUNRISE\', \'on\' ); 到wp配置的顶部。php文件。

第二步:创建日出。wp内容目录中的php文件。放<?php 从顶部开始。

第三步:在日出时。php文件将是您确定加载哪个站点的逻辑。

你要根据$_SERVER[ \'HTTP_HOST\' ] 变量如何做到这一点很简单:不管你想怎么做。如果你想写一个正则表达式\'/blog\\.(.*)\\.stackexchange\\.com/\' 然后在数据库中查找该位,您可以这样做。

因为这里使用的是与“子目录”相同的slug,所以不需要单独的表。您只需查看wp\\u blogs主表即可找到所需的站点。类似于此:

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = \'/wordpress/\' LIMIT 1" );

拥有$current\\u博客后,需要以下代码:

$current_blog->domain = $_SERVER[ \'HTTP_HOST\' ];
$current_blog->path = \'/\';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = \'{$current_blog->site_id}\' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;
这预先定义了$current\\u blog和$current\\u site全局变量,而不是让WordPress的MU函数来实现。

这将足以让站点正常运行(在让DNS指向它并整理好虚拟主机之后),但是HTML代码中使用的大多数静态URL仍然指向博客。stackexchange。com/wordpress,因为这才是网站真正的位置。此外,规范URL函数可能不喜欢URL,也会重定向您。

为了解决这些问题,您可能还需要预定义几个与站点关联的URL。像WP\\u SITEURL和WP\\u HOME之类的东西。此外,还有WP\\u CONTENT\\u URL、WP\\u PLUGIN\\u URL和WPMU\\u PLUGIN\\u URL。这应该涵盖正在调整的URL的大多数情况。

最后,您需要设置“COOKIE\\u域”。由于您可能希望在整个过程中共享登录名,因此可以将其设置为stackexchange。com或更高版本,如果您不想让它们成为共享登录。

如果您想讨论将普通的stackexchange登录系统集成到WordPress中,我也可以回答有关这方面的问题,但答案会更详细一些。:)

如果您需要更多帮助,请随时给我发电子邮件。很高兴协助:wordpress的奥托。组织。

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo