如何在没有301重定向的情况下禁用作者页面?

时间:2018-06-27 作者:Iulian Oleniuc

我已经使用Yoast SEO插件禁用了WordPress博客上的作者页面,但我看到当我单击作者名称时,它只是将我重定向到主页。我可以更改我的博客的URL吗。com/author/me直接访问我的博客。com,没有301重定向?谢谢

4 个回复
SO网友:Rick Hellewell

禁用作者页面是一件“好事”。“坏角色”可以枚举您的用户,甚至通过在任何页面上进行简单查询来获取您的管理员用户(即用户id 1)。因此,重定向作者请求是一个好主意,也是一个很好的安全措施。(因为永远不会有一个名为“admin”的用户,尤其是当它具有管理员权限时。)

例如,攻击者可以使用xmlprc。prg页面可向任何页面发布多个请求。他们可以查看x个作者id,并获得所有用户id的登录名列表。然后使用该列表尝试进入管理页面。

我怀疑Yoast插件正在重定向作者请求。将作者请求重定向到主页的代码如下所示:

function wp_redirect_if_author_query() {

    $is_author_set = get_query_var( \'author\', \'\' );
    if ( $is_author_set != \'\' && !is_admin()) {
        wp_redirect( home_url(), 301 );     // send them somewhere else
        exit;
    }
}
add_action( \'template_redirect\', \'wp_redirect_if_author_query\' );
在子主题的函数中放置此代码的变体(带有您想要的重定向)。php文件。或者在一个简单的插件中。(我有一个定制的个人插件,可以进行各种标准设置,包括与安全相关的设置。)您可能需要为add\\u操作(可选的第三个参数,默认为10)赋予更高的优先级,以覆盖Yoast插件正在执行的操作。

SO网友:Shawn W

如果不需要301重定向,一个选项是使用JS进行重定向。

;(function( $ ){
$(function() {
    /**
     * Redirect on path match
     * @param  The current window url
     * @return New url
     */

    const URLSearchParams = window.URLSearchParams;
    const urlParams = new URLSearchParams(window.location.search);
    const myParam = urlParams;

    let replacer = (function (myParam) {
        let newURL = `/`;
        if (window.location.href.indexOf(\'author/me\') > -1) {
            window.location.replace(newURL);
        } else if (!myParam) {
            return undefined;
        }
    })((myParam));
   });
})( jQuery );

SO网友:Nigel Carr

在Yoast中,只需选择:

作者存档-启用在搜索结果中显示-禁用

总比乱搞代码好。

SO网友:Robert Went

您应该在主题中找到输出链接的代码,然后将其删除,以仅将作者的姓名显示为文本。

如果没有指向作者页面的链接,并且它们被重定向/未索引,如果有人猜测它们,那么就没有问题。

结束

相关推荐

How to redirect?

我这里有这个代码,我正在将它插入一个插件文件中。基本上,我想将其设置为,如果一个人访问帖子ID(524)的直接链接,它将重定向回主页。但是如果这个人来自这个领域,它就会起作用。在某处找到此代码并对其进行了调整,但我认为存在一些错误。if( $post->ID == 524) { return; } if (wp_get_referer() == \'the domain\') { return; } wp_redirect( get_hom