配置nginx以使用WordPress Multisite - 301重定向

时间:2015-10-20 20:16:11

标签: wordpress nginx dns multisite

我遇到了尝试在nginx上运行WordPress Multisite(使用子域)的问题。

这是我理想的设置:

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安装。

我的本地主机文件设置如下:

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

等...

我的问题是,每当我尝试访问domain.comsub*.domain.com时,我都会被重定向到我服务器上完全不同的网站,这个网站恰好是列表的顶部在sites-enabled。仔细检查后,当检查Chrome中的“网络”标签时,我可以看到我对domain.comsub*.domain.com的请求被重定向到上述不相关的网站。

我已刷新我的本地Chrome缓存,我一直在使用隐身模式,我无法动摇此重定向。我甚至使用Firefox,因为我很少使用它,所以不希望任何缓存domain.com

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

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

任何人都可以提供任何建议/解决方案,以便我如何配置,以便一切正确路由?我的本地环境运行LAMP堆栈,所以我有这个工作,我已经改变了wp-config.php文件以反映新的“实时”域(记住,我还没有配置DNS,我刚刚在{{1 }}

任何帮助都一如既往地赞赏:)

2 个答案:

答案 0 :(得分:0)

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

只需在多个location块中指定server块,但相同(或没有)server_name即可让它们神奇地匹配。

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

See here for how.

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

server_name *.whatever.com;

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

请注意, 应具有默认服务器的server_name,例如

server_name "_";

答案 1 :(得分:0)

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

虽然这种方法并没有严格修复'我的问题,我觉得我在这里学到了宝贵的一课 - 有时从头开始比试图做出合适的东西更好!