WordPress多站点网络:Nginx伪静态设置与子目录、子域名指南

一、安装 Nginx Helper 插件


Nginx Helper 工具能够为我们创建 Nginx map 的对应关系,这对之后设置 Nginx 的伪静态规则十分有益。下载并在站点网络中激活此工具后,直接在工具的配置页面选择Enable Nginx Map.这一选项并保存。随后,你会看到该工具为你产生的映射文件详情。

8308d508a7bf36a

二、修改网站配置文件


采用宝塔面板作为示例,在网站配置的server部分上面插入以下代码,然后替换为Nginx Helper工具所输出的映射文件内容。

这是子目录的:

map $uri $blogname {
    ~^(?<blogpath>/[^/]+/)files/(.*)  $blogpath ;
}

map $blogname $blogid {
    default -999;
    include 映射文件路径.conf;
}

这是子域名的:

 

map $http_host $blogid {
    default       -999;
    include 映射文件路径.conf;
}

保存完成后应如下图所示:

3da96fb93bd3029

三、设置 Nginx 伪静态规则


以宝塔面板为参考,进入网站的伪静态设置界面,将下面的代码输入进去:

以下是针对子目录的代码:

 

# 避免 PHP 读取静态文件
location ^~ /blogs.dir {
  internal;
  alias /网站目录/wp-content/blogs.dir ;
  access_log off; log_not_found off; expires max;
}
# 通过 map 读取对应站点的文件
location ~ ^(/[^/]+/)?files/(.+) {
  try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ;
  access_log off; log_not_found off; expires max;
}
# 重写
if (!-e $request_filename) {
  rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
  rewrite ^(/[^/]+)?(/wp-.*) $2 last;
  rewrite ^(/[^/]+)?(/.*.php) $2 last;
}
# 重写
location / {
  try_files $uri $uri/ /index.php?$args ;
}

这是子域名的:

 

# 避免 PHP 读取静态文件
location ^~ /blogs.dir {
  internal;
  alias /网站目录/wp-content/blogs.dir ;
  access_log off; log_not_found off; expires max;
}
# 通过 map 读取对应站点的文件
location ~ ^/files/(.*)$ {
  try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ;
  access_log off; log_not_found off; expires max;
}
# 重写
location / {
  try_files $uri $uri/ /index.php?$args ;
}

四、大功告成

如果您正在使用WP-Super-Cache或者W3 Total Cache插件,您可以前往https://wordpress.org/support/article/nginx/#wp-super-cache-rules,获取它们所需的Nginx规则。然后,将这些规则替换上述提供的相应部分,这将有助于在绕过PHP的情况下最大化提升性能。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享