在子目录Sitemap中的Wordpress单一安装重写规则Nginx

时间:2018-05-18 11:20:29

标签: wordpress nginx yoast easy-engine

我在另一个wordpress安装的子目录中有一个单独的wordpress安装。子目录的名称是“博客”(这不是多站点设置)。我对nginx的重写规则是:

location ~ ([^/]*)sitemap(.*)\.x(m|s)l$ {
 rewrite ^/sitemap\.xml$ /sitemap_index.xml permanent;
  rewrite ^/([a-z]+)?-?sitemap\.xsl$ /index.php?xsl=$1 last;

  # Rules for yoast sitemap with wp|wpsubdir|wpsubdomain
  rewrite ^.*sitemap_index\.xml$ /index.php?sitemap=1 last;
  rewrite ^.*/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
}

为example.com/sitemap_index.xml和example.com/blog/sitemap_index.xml生成了Sitemap,但两者都相同,并且不包含子目录(博客)中第二次安装的帖子。我知道这与子文件夹的重写规则配置有关,但我无法弄清楚究竟是什么问题。我正在使用Yoast插件,并在两个安装上分别安装了Yoast插件,即root和子文件夹。

1 个答案:

答案 0 :(得分:0)

我得到了这个工作。所以基本上问题是nginx重写规则,它是最简单引擎的最新版本。由于默认情况下子目录中的单个wordpress安装不习惯,因此需要稍微修改这些规则。

所以改变:

rewrite ^/sitemap\.xml$ /sitemap_index.xml permanent;
rewrite ^/([a-z]+)?-?sitemap\.xsl$ /index.php?xsl=$1 last;
rewrite ^.*sitemap_index\.xml$ /index.php?sitemap=1 last;
rewrite ^.*/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

rewrite ^$dir1/sitemap\.xml$ $dir1/sitemap_index.xml permanent;
rewrite ^$dir1/([a-z]+)?-?sitemap\.xsl$ $dir1/index.php?xsl=$1 last;
rewrite ^$dir1.*sitemap_index\.xml$ $dir1/index.php?sitemap=1 last;
rewrite ^$dir1.*/([^/]+?)-sitemap([0-9]+)?\.xml$ $dir1/index.php sitemap=$1&sitemap_n=$2 last;

其中$ dir1显然是您的子目录,您可以通过在位置块中检查它来指定。