子域上的 nginx 替换文件 sitemap.xml

nginx substitude file sitemap.xml on subdomain

我在站点 public 目录中有文件 sitemap.xml。当我使用子域 'm.' 时,它使用与一般站点相同的 public 目录。当我在子域 'm.'.[=12= 上时,我需要从 url '/sitemap.xml' return 文件 '/mobile-sitemap.xml' ]

哪些 nginx 模块和规则可以帮助我做到这一点?

我的第一步是这样的:

if ($host ~* m\.(.*)) { #if url = /sitemap.xml, give back file /mobile-sitemap.xml as /sitemap.xml }

或者如果我只是将 301 重定向发送到另一个站点地图文件,google 也可以吗?

您可以为您的移动子域创建一个单独的服务器块,在这种情况下就不需要 if 语句。请参阅 this caution 关于 if.

的用法

但是,要在单个服务器块中实现此功能,请使用 locationrewrite:

location = /sitemap.xml {
    if ($host ~* m\.) {
        rewrite ^ /mobile-sitemap.xml last;
    }
}

有关更多信息,请参阅 this and this