我能够解决这个问题。htaccess。
在我的wp配置中。php我检索了数组中的站点。如果需要,可以从数据库中获取此信息。然后,我将输入的url与已知站点进行匹配并进行检查。在我的例子中,所有URL都以结尾。com(如果将来需要,我可以随时修改preg以用于.net或w/e)。为了安全起见,我还清理了url。然后我基本上告诉wordpress何时重定向到使用基本域(即访问域的主页)。wordpress的默认设置是转到多站点安装中的主站点。
以下是我的片段:
preg_match(\'#^.*\\.([A-Za-z]*.com)#\', filter_var($_SERVER["HTTP_HOST"], FILTER_SANITIZE_URL), $match);
$attempted_domain = $match[1];
$domain = \'http://site1.com\';
//wordpress handles the parent domain of multisite special; so DO NOT set NOBLOGREDIRECT for site1.com. For example site1.com/doesnotexist will not show a 404 page but the homepage instead which is incorrect so have to add this first if conditional
if($attempted_domain == $domain){
//otherwise check against our domain list and then redirect to that domain (site2.com/thisdoesnot exist will work correctly)
foreach($all_domains AS $known_domain){
if($attempted_domain == $known_domain){
$domain = \'http://\'.$known_domain;
break;
}
}
define(\'NOBLOGREDIRECT\', $domain);
}
1.)这里要微妙地认识到的是,DNS解析您的域。有点像胡说八道。令人惊叹的疯子富。酒吧站点1。com将访问您的网站。在这种情况下,我要确保无论存在多少子域级别,我都会对照基本域站点1进行检查。com在我的网站列表中。
2.)只有当您尝试转到不存在的站点时,才会使用NOBLOGREDIRECT。例如,丢失的页面/帖子仍将像通常一样为404。See #4 for exception
3)如果由于某种原因找不到域,请使用我们知道存在的默认值。例如,如果我们更改了DNS,但实际上尚未设置站点,则可能会发生这种情况。
4.)访问安装的父域时,内部wordpress功能和NOBLOGREDIRECT有一个特例。您会注意到,当父域是正在访问的域时,我从未设置NOBLOGREDIRECT。否则,404不会显示给家长,您会被重定向到不正确的主页。安装中的其他域不受影响,因此我们可以在那里使用NOBLOGREDIRECT。