WordPress 开启多站点 Apache和Nginx伪静态规则

2025-10-23 13:32:27

1、开启网络配置

在网站根目录下的 wp-config.php 添加:

define('WP_ALLOW_MULTISITE', true);

配置多站点模式

刷新网站后台,访问 工具 > 配置网络,根据自己的需要选择“子域名”或者“子目录”模式,然后点击“安装”

只有新安装的WordPress,并且绑定了域名,这时候才可以选择“子域名”模式。

2、如果你选择是的“子域名”,安装后,请将下面的代码添加到网站根目录下的 wp-config.php 下:

define('MULTISITE', true);define('SUBDOMAIN_INSTALL', true);define('DOMAIN_CURRENT_SITE', 'yourdomain.com');define('PATH_CURRENT_SITE', '/');define('SITE_ID_CURRENT_SITE', 1);define('BLOG_ID_CURRENT_SITE', 1);

如果选择的是“子目录”,则添加:

define('MULTISITE', true);define('SUBDOMAIN_INSTALL', false);define('DOMAIN_CURRENT_SITE', 'yourdomain.com');define('PATH_CURRENT_SITE', '/');define('SITE_ID_CURRENT_SITE', 1);define('BLOG_ID_CURRENT_SITE', 1);

3、添加伪静态规则

Apache 规则

如果你的服务器使用的是Aache环境,使用下面的代码替换网站根目录下的 .htaccess 里面的所有代码

子域名模式下的规则代码:

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

4、子目录模式下的规则代码:

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

5、Nginx 规则

倡萌测试的是 CentOS 5.4 32位系统,服务器使用的是 军哥 LNMP 1.0 安装包配置的。

假设你的网站为 yourdomain.com,那么你可以编辑这个配置文件:

vi /usr/local/nginx/conf/vhost/yourdomain.com.conf

在最后一个 } 的前面添加下面的代码:

#ignored: “-” thing used or unknown variable in regex/rewrewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;if (-f $request_filename){    set $rule_2 1;}if (-d $request_filename){    set $rule_2 1;}if ($rule_2 = "1"){#ignored: “-” thing used or unknown variable in regex/rew}rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;rewrite /. /index.php last;

6、以上的规则对于 子域名 和 子目录 模式都正常使用,但是,如果你选择的是 子域名 模式,还需要找到:

server_name yourdomain.com;

添加一个泛域名 *.yourdomain.com,如下:

server_name yourdomain.com *.yourdomain.com;

保存文件,然后重启服务器:

/root/lnmp restart

然后在你的域名管理那里添加一条泛域名 *.yourdomain.com 解析到主机IP(或者分别解析你即将要使用的子域名到主机IP),这样一来,创建子域名站点时,就可以正常访问了。

7、附:以下是 Nginx 下最完整的多站点配置代码,实际使用时,请根据自己的实际修改域名及网站目录,同时建议删除含有中文的行:

# 根据自己的实际修改下面的域名log_format  yourdomain.com  '$remote_addr - $remote_user [$time_local] "$request" '             '$status $body_bytes_sent "$http_referer" '             '"$http_user_agent" $http_x_forwarded_for';server        {                listen       80;                # 根据自己的实际修改下面的域名                server_name yourdomain.com *.yourdomain.com;                index index.html index.htm index.php default.html default.htm default.php;                # 注意修改下面的网站目录                root  /mnt/wwwroot/yourdomain.com;                  #include wordpress.conf;                #以下是 lnmp 1.0 的 wordpress.conf 规则,也就是上一行 include wordpress.conf 里面的                location / {                    if (-f $request_filename/index.html){                        rewrite (.*) $1/index.html break;                    }                    if (-f $request_filename/index.php){                        rewrite (.*) $1/index.php;                    }                    if (!-f $request_filename){                        rewrite (.*) /index.php;                    }                }                # wordpress.conf 规则 结束                location ~ .*\.(php|php5)?$                        {                                try_files $uri =404;                                fastcgi_pass  unix:/tmp/php-cgi.sock;                                fastcgi_index index.php;                                include fcgi.conf;                        }                 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$                        {                                expires      30d;                        }                location ~ .*\.(js|css)?$                        {                                expires      12h;                        }                 access_log  /home/wwwlogs/huchangmeng.com.log  huchangmeng.com;                 #ignored: “-” thing used or unknown variable in regex/rew                rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;                if (-f $request_filename){                    set $rule_2 1;                }                if (-d $request_filename){                    set $rule_2 1;                }                if ($rule_2 = "1"){                    #ignored: “-” thing used or unknown variable in regex/rew                }                rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;                rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;                rewrite /. /index.php last;         }

修改固定链接结构

主站点

这里说的主站的,默认就是最初安装时的主域名,比如 yourdomain.com

如果是 子域名 模式,你可以直接在这个主站的的 设置 > 固定链接 直接修改即可。

如果是 子目录 模式,主站点的文章都自动在链接中添加了 /blog/,如果你直接在这个子目录站点的 设置 > 固定链接 设置结构,是无法去除 /blog/ 的,而且在 lnmp 环境下,直接修改会自动添加 index.php。

解决办法是,访问 所有站点,点击主站点的编辑:

切换到“设置”标签,找到 Permalink Structure ,在这里直接填写 固定链接结构(比如 /%postname%.html),保存即可。这样就可以去除 /bolg/ ,同时不会添加 index.php,非常完美。

8、子站点

子站点直接在这个站点的后台 设置 > 固定链接 那里设置即可。

附加插件:

1.WordPress 多站点网络克隆网站数据和设置

在网络中安装启用 Multisite Cloner  插件以后,在设置界面选择一个站点作为默认站点

然后在站点列表中,点击站点下的 Clone 即可

2.WordPress 多站点网络共享图片媒体文件

安装启用 Network Shared Media 插件以后,在多媒体的上传插入页面,你可以看到多出了“Network Shared Media”标签,然后就可以选择任何一个站点的文件了

在后台插件安装界面搜索 Network Shared Media 即可在线安装,或者到 WordPress插件库 下载。

3.WordPress多站点网络插件和主题检测:Network Plugin Auditor

对于WordPress多站点网络,你可能需要了解哪个站点使用了什么主题和插件,建议你试试Network Plugin Auditor插件。

Network Plugin Auditor 专用于多站点模式下,会在你的主题和插件管理界面,显示它们都被哪些站点使用。这样一来,你就可以很快了解,并且不会误删正在使用的主题或插件。

WordPress 关闭多站点模式

今天就简单说一下,如何将关闭多站点模式,还原主站点为单站点(主站点即你开启多站点模式前的默认站点)。

开始之前,你要备份整个数据库和所有文件,然后想办法将主站点以外的所有站点的恢复到其他地方,或者分别转到单站点模式。在这里暂时不介绍这个步骤,但是你一定要自己做好!!建议先阅读 WordPress 开启多站点(含Apache和Nginx伪静态规则),因为很多步骤都是反过来的。

1、禁用所有插件,删除主站点以外的所有站点(记得备份或迁移这些站点,删除操作将会删除相关的数据)

2、删除之前添加到 wp-config.php 用来开启多站点的配置代码(类似以下代码:)

define('WP_ALLOW_MULTISITE', true); define('MULTISITE', true);define('SUBDOMAIN_INSTALL', true);define('DOMAIN_CURRENT_SITE', 'yourdomain.com');define('PATH_CURRENT_SITE', '/');define('SITE_ID_CURRENT_SITE', 1);define('BLOG_ID_CURRENT_SITE', 1);

这时登录后台你会发现已经回到了单站点模式

3、清除多站点的伪静态规则:如果是Apache环境,请删除之前添加到 .htaccess 的规则代码;如果是 Nginx环境,请删除添加conf配置文件的代码。具体的请查看之前的 WordPress 开启多站点(含Apache和Nginx伪静态规则)  。访问网站后台,重新设置固定链接结构。

4.开启所需插件,到这里应该可以恢复主站点的正常访问了。但还是建议 登录 phpMyAdmin 删除多余的数据库表:

wp_blogswp_blog_versionswp_registration_logwp_signupswp_sitewp_sitemeta

以及 wp_users 下的 spam 和 deleted 字段

注:这里举例的是默认的数据库前缀 wp_ ,请根据自己的实际数据库前缀操作。

删除前面6个数据库很简单,直接选中,然后删除即可:

不会操作 phpMyAdmin 的,请先阅读 phpMyAdmin教程。

删除 wp_users 下的 spam 和 deleted 字段,需要进入到 wp_users,然后执行 SQL 命令。

删除 spam 字段:

ALTER TABLE wp_users DROP COLUMN spam

删除 deleted 字段:

ALTER TABLE wp_users DROP COLUMN deleted

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢