多站点网络管理

创建多站点网络后,由于多站点的额外复杂性,您可能还需要了解一些有关高级管理的其他信息。即使您熟悉 WordPress,多站点网络管理的位置和行为也可能令人困惑。

用户访问和能力

按照设计,添加到您的网络的所有用户都将拥有对您网络上所有站点的_订户访问权限。_要为各个站点上的用户分配不同的默认角色,您必须使用插件。

站点管理员角色的功能在 WordPress 网络中也有所降低。站点管理员无法安装新的主题或插件,也无法在其站点上编辑用户的配置文件。只有网络管理员(又名超级管理员)有能力在 WordPress 网络中执行这些任务。

子文件夹安装中的固定链接

虽然永久链接将继续工作,但主站点(即第一个创建的站点)将有一个额外的条目blog,使您的 URL 看起来像domain.com/blog/YYYY/MM/POSTNAME.

这是设计使然,以防止与 SubFolder 安装发生冲突。目前没有简单的方法来更改它,因为这样做会阻止 WordPress 自动检测您的主站点和任何子站点之间的冲突。这将在未来版本的 WordPress 中得到解决和定制。

另请注意,blog前缀不用于可直接在基地址下访问的静态页面,例如domain.com/PAGENAME. 如果您尝试在第一个站点中使用网络上另一个现有站点的名称创建静态页面,该页面的永久链接将获得一个后缀(例如 )domain.com/PAGENAME-2。如果您使用现有静态页面的 slug 创建一个新站点,将无法再访问该静态页面。为防止这种情况,您可以将静态页面的名称添加到黑名单中,这样就无法创建具有该名称的站点。

上传文件路径

您全新安装的第一个站点会将上传的文件放在传统位置/wp-content/uploads/,但是您网络上的所有_后续_ 站点都将位于该/wp-content/uploads/sites/文件夹中,根据数据库指定的站点编号位于它们自己的子文件夹中。可以通过该 URL 访问这些文件。

这是 Multisite 3.0-3.4.2 的一个变化,其中子站点的图像存储/wp-content/blogs.dir/在 http://example.com/files/ 和 http://example.com/sitename/files 等中并显示。如果您从早于 3.5 的多站点安装开始,如果您的图像显示的 URL_不是_/files/错误。

无论 WP 版本如何,站点管理员都无法更改这些位置。只有网络管理员才能在站点设置页面上进行更改。不建议您在不了解两者如何ms-files.php与您的 一起工作的情况下更改这些.htaccess,因为它很容易变得无法正常工作。如果/files/url 不起作用,则表示服务器上的 .htaccess 或 httpd.conf 文件配置错误。

插件

插件现在具有额外的灵活性,具体取决于它们在网络中的实现。所有插件都安装在网络仪表板的插件页面上,可以按站点或整个网络激活。

  • **站点特定插件:**这些插件是从单个特定站点的插件页面中激活的。某些插件(例如联系表格)在单站点激活时效果最佳,因此它们可以将数据和设置存储在单个站点的数据库表中,而不是整个网络的表中。要单站激活/停用的 WordPress 插件存储在 plugins 目录中。
  • 网络插件: 网络管理员可以在插件的网络管理员仪表板中“网络激活”插件。一旦“网络激活”,插件将在所有站点中激活。“网络激活”插件在各个站点的仪表板的插件列表中显示为“网络激活”。一些插件只有在网络激活时才能在多站点环境中运行。网络激活的 WordPress 插件也存储在插件目录中。
  • **Must-Use Plugins:**全网所有站点使用的插件也可以作为单个文件安装在mu-plugins目录中,或者一个文件包含一个子文件夹。文件夹中的任何文件都不会被读取。这些文件未激活或停用;如果存在,则使用它们。这些插件完全隐藏在每个站点的插件列表中。

并非存储库中的所有插件都可以在多站点环境中工作。请查阅插件的存储库页面或联系开发人员以获取有关特定插件是否可以在多站点网络中运行的信息。

如果您希望单个站点管理员能够为他们的站点激活/停用特定于站点的插件,您需要从网络管理员的设置 -> 网络设置菜单(“菜单设置”)为单个站点管理员启用插件页面。网络管理员将始终可以访问每个站点的插件。单个站点的管理员将能够激活和停用非网络激活的插件,但会将网络激活的插件视为“网络激活”,没有停用或设置选项。

有一些插件可以帮助为单个站点批量激活/停用插件。

主题

为整个网络安装所有主题。如果您编辑一个主题的代码,则您会为使用该主题的所有站点编辑它。您可以安装插件WP Add Custom CSS以允许每个站点调整自己的 CSS 而不会影响其他任何人。此外,个别网站可能会使用主题定制器,它们的设置将仅存储在其网站的表格中。

“网络激活”主题不会使其成为每个站点上的活动主题,而只是使其可以在所有单个站点上激活。要在单个站点的仪表板中激活,主题必须通过网络激活或在网络管理 – 编辑站点 – 主题选项卡中启用。在单个站点中激活主题后,它可能会被网络停用,而不会影响它保持激活状态的单个站点。

默认情况下,WordPress 将最新的“Twenty …”指定为所有新站点的主题。define('WP_DEFAULT_THEME', 'classic');这可以通过在您的文件中添加一行来自定义wp-config.php,其中“经典”替换为您的主题的文件夹名称。

类别和标签

全局术语(即在网络上的站点之间共享标签和类别)在 WordPress 3.0 中不可用。您可以使用插件在站点的门户/首页或网络中的特定页面或站点上合并全局标签,以增加基于微分类内容的导航。

站点之间的内容共享

网络站点是默认情况下不共享内容的独立站点。将您的网络想象成迷你版的 WordPress.com。有几个插件可以帮助您在站点之间共享内容,例如这个。

切换网络类型

可以在多站点的基于域(子域)和基于路径(子目录)的安装之间切换。如果您在单个站点上安装 WordPress 超过一个月,并试图将该站点激活到网络中,您将被告知使用子域站点。这是为了确保您在页面(即 example.com/pagename )和站点(即 example.com/sitename )之间没有冲突。如果您确信自己不会遇到此问题,则可以在完成初始设置后更改此设置。

在您的wp-config.php文件中,您需要更改以下内容的定义调用SUBDOMAIN_INSTALL:对于基于域的网络(子域安装)

define( 'SUBDOMAIN_INSTALL', true );

对于基于路径的网络(子目录安装)

define( 'SUBDOMAIN_INSTALL', false );

您还必须将您的设置更改.htaccess为新设置。你可以去网络管理——设置——网络设置找到新的.htaccess规则,或者看下面。

请注意,根据设置要求,您不能在 或上运行时从子目录切换到子域。由于 cookie 处理,这可能会导致根站点上 reauth=1 的无限循环。127.0.0.1``localhost

Apache 虚拟主机和 Mod 重写

要使 mod_rewrite 在 Apache 虚拟主机中工作,您可能需要在 DocumentRoot 上设置一些选项。

<VirtualHost *:80>
    ...
    DocumentRoot /var/www/vhosts/wordpress
    <Directory /var/www/vhosts/wordpress>
        AllowOverride Fileinfo Options
    </Directory>
    ...
</VirtualHost>

在某些情况下,您需要将 All 添加到 AllowOverride 才能使所有 htaccess 规则生效。

.htaccess 和 Mod 重写

与 Single Site WordPress 不同,它可以使用“丑陋的”永久链接,因此不需要 Mod Rewrite,MultiSite_需要_使用它来格式化您的子站点的 URL。这需要使用 .htaccess 文件,如果您使用子文件夹或子域,其格式会略有不同。以下示例是 WordPress 子文件夹和子域的标准 .htaccess 条目,当 WordPress 安装在您网站的根文件夹中时。如果您在自己的文件夹中有 WordPress,则需要适当地更改 RewriteBase 的值。

提醒一下,这些只是示例,适用于大多数(但不是全部)安装。

子文件夹示例

WordPress 3.0 到 3.4+

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

WordPress 3.5+仅当您在 3.5 上启动多站点时才使用此功能。如果您从 3.4 升级到 3.5,请使用旧版本!

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress

子域示例

WordPress 3.0 到 3.4+

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# END WordPress

WordPress 3.5+

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ wp/$1 [L]
RewriteRule . index.php [L]
# END WordPress

旧 WPMU 安装的问题

如果您将 WordPress MU 安装在子文件夹/子目录中(而不是通过 ftp 在您的服务器上的根文件夹中)并且您的图像库有问题,缩略图和图像不显示,您可能需要手动添加文件目录的重写规则作为如下:

RewriteRule ^([_0-9a-zA-Z-]+/)?siteN/files/(.+) wp-content/blogs.dir/N/files/$2 [L]

把那些放在上传文件的正常调用_下面。_

网络管理员链接位置

网络管理链接随着 WordPress 的每个主要版本而移动,因为这仍在进行中。根据您使用的 WordPress 版本,可以在以下位置找到该链接:

  • _3.0 – 名为超级管理员的_菜单
  • 3.1 – 在“你好,你的名字”的管理标题上。
  • 3.2 – 在管理标题上,作为“你好,你的名字”下的下拉菜单。
  • 3.3+ – 在管理栏上,作为“我的网站”下的下拉菜单

域映射

在 WordPress 4.5 之前,域映射需要域映射插件。在 WordPress 4.5+ 中,域映射是 Multisites 的原生功能。在WordPress 多站点域映射中了解如何使用此功能

移动多站点

移动多站点比移动单个安装更复杂。在继续之前请阅读移动 WordPress 多站点。

导入网络

当您创建了用于导入其他站点的 WordPress 网络时,您需要查看将多个博客迁移到 WordPress 多站点一文。

变更日志

  • 2022-10-25:来自多站点网络管理的原始内容。