我遇到了尝试在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.com
或sub*.domain.com
时,我都会被重定向到我服务器上完全不同的网站,这个网站恰好是列表的顶部在sites-enabled
。仔细检查后,当检查Chrome中的“网络”标签时,我可以看到我对domain.com
或sub*.domain.com
的请求被重定向到上述不相关的网站。
我已刷新我的本地Chrome缓存,我一直在使用隐身模式,我无法动摇此重定向。我甚至使用Firefox,因为我很少使用它,所以不希望任何缓存domain.com
我可能完全不在这里,它可能与浏览器无关,而是与服务器和nginx配置无关。有什么东西迫使301,我不知道是什么。
似乎this plugin在讨论中出现了很多,但据我所知,这只适用于想要将常规域映射到子域的情况,这不是我想要的。
任何人都可以提供任何建议/解决方案,以便我如何配置,以便一切正确路由?我的本地环境运行LAMP堆栈,所以我有这个工作,我已经改变了wp-config.php
文件以反映新的“实时”域(记住,我还没有配置DNS,我刚刚在{{1 }}
任何帮助都一如既往地赞赏:)
答案 0 :(得分:0)
唯一可以避免您的请求由" fallback",默认vhost(即" first"那里)提供服务的是server_name
指令。
只需在多个location
块中指定server
块,但相同(或没有)server_name
即可让它们神奇地匹配。
你可以但是使用正则表达式服务器名称。
对于只有一个域的特定情况,您可以使用
server_name *.whatever.com;
然后仅将location
与return 301 http://whatever.com;
匹配到子域。这样您就不需要正则表达式服务器名称。
请注意, 应具有默认服务器的server_name,例如
server_name "_";
答案 1 :(得分:0)
所以最后我决定在我的nginx环境中从头开始构建多站点,而不是试图采用Apache中的工作并重新配置nginx。据我所知,我已经更新了从Apache到nginx所需的所有内容,以及将本地域更新为数据库和wp-config中的实时域。
虽然这种方法并没有严格修复'我的问题,我觉得我在这里学到了宝贵的一课 - 有时从头开始比试图做出合适的东西更好!