配置 nginx 以使用 WordPress 多站点 - 301 重定向

Configuring nginx to work with WordPress Multisite - 301 redirect

我在尝试在 nginx 上获取 WordPress 多站点(使用子域)运行 时遇到问题。

这是我的理想设置:

domain.com
sub1.domain.com
sub2.domain.com
sub3.domain.com

www.domain.com 的任何请求都应该是 301 到 domain.com(我的理解是 WordPress 无论如何都会去掉 www?)

我不想通过任何其他方式访问任何子域,例如 domain2.com 会将用户定向到 sub2.domain.com - 这不是我想要的。

我已遵循此 DigitalOcean tutorial 并且在常规 WordPress 安装中一切正常。

我的本地hosts文件设置如下:

XXX.XXX.XXX.XXX domain.com
XXX.XXX.XXX.XXX sub1.domain.com

等...

我的问题是,每当我尝试访问 domain.comsub*.domain.com 时,我都会被重定向到我服务器上的一个完全不同的站点,该站点恰好位于sites-enabled 中的列表。仔细检查,当检查 Chrome 中的“网络”选项卡时,我可以看到我对 domain.comsub*.domain.com 的请求被 301 重定向到上述不相关的站点。

我已经刷新了我的本地 Chrome 缓存,我一直在使用隐身模式,我就是无法摆脱这个重定向。我什至在使用 Firefox,因为我很少使用它,所以不会期望 domain.com

有任何缓存

我在这里可能完全偏离了主题,这可能与浏览器完全无关,而是与服务器和 nginx 配置有关。有什么东西迫使 301,我不知道是什么。

this plugin 似乎在讨论中出现了很多,但据我所知,这仅适用于想要将常规域映射到子域的情况,这不是我想要的。

任何人都可以提供 advice/solutions 我如何配置才能正确路由所有内容吗?我的本地环境运行一个 LAMP 堆栈,所以我有这个工作,我已经改变了 wp-config.php 文件以反映新的 'live' 域(记住,我没有配置 DNS,我只是在 etc/hosts.

中被黑

一如既往地感谢您的帮助:)

唯一可以避免您的请求被 "fallback" 默认 vhost(即那里的 "first")提供服务的是 server_name 指令。

仅仅通过在多个 server 块中指定 location 块具有相同的(或没有)server_name 不会使它们神奇地匹配。

可以但是使用正则表达式服务器名称。

See here for how.

对于只有一个域的特定情况,您可以使用

server_name *.whatever.com;

然后仅将 locationreturn 301 http://whatever.com; 匹配子域。这样你就不需要正则表达式服务器名称了。

请注意,您应该为默认服务器设置server_name,例如

server_name "_";

所以最后我决定在我的 nginx 环境中从头开始构建多站点,而不是尝试采用 Apache 中的工作并为 nginx 重新配置。据我所知,我已经更新了从 Apache 到 nginx 所需的所有内容,并将本地域更新为数据库和 wp-config 中的实时域。

虽然这种方法并不严格 'fix' 我的问题,但我确实觉得我在这里学到了宝贵的一课 - 有时从头开始比尝试做一些合适的事情更好!