alexsancho/wp-noblogredirect-fix

修复了在多站点安装中定义 NOBLOGREDIRECT 常量时的 404 重定向不良行为。

此包的官方仓库似乎已不存在,因此该包已被冻结。

安装次数: 1,860

依赖项: 1

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放性问题: 0

类型:wordpress-muplugin

v1.0.0 2018-03-30 18:58 UTC

This package is auto-updated.

Last update: 2021-10-14 12:45:46 UTC


README

安装

首选的安装方式是使用 composer

$ composer require alexsancho/wp-noblogredirect-fix

关于

对那些不知道 NOBLOGREDIRECT 是什么的用户,这里有一些简单的解释。

在 wp-config.php 文件中定义的 'NOBLOGREDIRECT', '%siteurl%'; 使其当有人输入一个不存在的子域名时,可以重定向到您想要的任何 URL。您可以使用此功能将其重定向到特定的 FAQ 页面或直接回到主根安装,您可以将它重定向到任何您想要的地方。例如,可以将 %siteurl% 替换为 define('NOBLOGREDIRECT', 'http://frumph.net/FAQ/site-create');

当有人在浏览器中尝试访问(例如)http://badsubdomain.frumph.net/(一个不存在的子域名)时,它将重定向到 NOBLOGREDIRECT 中定义的 URL。

如果不使用 NOBLOGREDIRECT,例如访问 http://badsubdomain.frumph.net/(一个不存在的子域名)时,它会重定向到注册页面,询问用户是否可以创建该子域名。这是可以的,如果有人输入了错误的 URL,将其重定向到注册页面是没有问题的。然而,那些认为用户直接重定向到主页更美观的人不喜欢这样,所以我们想使用 NOBLOGREDIRECT 将用户重定向到首页;让用户首先查看网站。

那么行为问题在哪里呢?当使用 NOBLOGREDIRECT 并在主站点的正常使用中时,问题就出现了。不良行为是当有人访问主站点上不存在的页面时。例如 http://frumph.net/idontexist/;它不会重定向到网站的 404 页面(页面不存在模板),而是重定向到 NOBLOGREDIRECT 中指定的内容。等等?为什么它会这样做?重定向 404 页面的行为是 WPMU 中的一个旧功能,不应该再存在了,但是在 WPMU 与 WordPress 自身合并时被遗留了下来。

为了修复这种行为,使其返回显示 404 页面,我们可以怎么做呢?很简单,您只需要禁用调用那些 404 的函数。

在您的 /wp-content/mu-plugins/ 文件夹中,(如果您没有并正在使用多站点,您可以手动创建它) 您可以添加一个自定义.php 文件到其中,并添加一行禁用操作。

例如,创建一个名为 custom.php 的文件,将其放入 /wp-content/mu-plugins/

custom.php
1	<?php
2	remove_action( 'template_redirect', 'maybe_redirect_404' );
3	?>

导致不良行为(不正确重定向 404 页面)的函数可能是 maybe_redirect_404(),它作为 add_action 被调用,因此为了使我们不运行该函数,我们使用 remove_action 来移除 add_action。

将我们刚才创建的自定义.php 文件放置在 mu-plugins 文件夹中意味着它将自动激活并始终运行。

现在,那些404页面正在重定向到您主题的“404页面未找到”模板,而错误子域名将进入您在NOBLOGREDIRECT中指定的位置。

  • Phil

注意:NOBLOGREDIRECT的原始目的是在需要注册页面而不是发送到404页面时,将其指向某些“其他”位置是有用的,然而该定义的命名约定容易误导,从而导致最终用户对其功能的理解错误;尽管我仍然不知道为什么有人会希望注册页面显示在404页面上,但显然多站点用户确实这样做,因为他们仍然坚持其有效性。

来源:http://frumph.net/2010/06/05/wordpress-3-0-multisite-subdomain-installation-noblogredirect-behavior-fix/