我知道这是一篇老文章,但为了将来的参考,我想添加我的解决方案。这只是放在functions.php
你的主题。它将使所有内容保持原位并正常工作,即使是作者存档,但它会消除错误的枚举请求。
if (!is_admin()) {
if( preg_match(\'/author=([0-9]*)/i\', $_SERVER[\'QUERY_STRING\']) ) {
add_filter( \'query_vars\', \'iside_remove_author_from_query_vars\' );
}
add_filter(\'redirect_canonical\', \'iside_remove_author_from_redirects\', 10, 2);
}
function iside_remove_author_from_redirects($redirect, $request) {
if( !is_admin() && preg_match(\'/author=([0-9]*)/i\', $_SERVER[\'QUERY_STRING\']) ) {
add_filter( \'query_vars\', \'iside_remove_author_from_query_vars\' );
}
return $redirect;
}
function iside_remove_author_from_query_vars( $query_vars ) {
if( !is_admin() ) {
foreach( array( \'author\', \'author_name\' ) as $var ) {
$key = array_search( $var, $query_vars );
if ( false !== $key ) {
unset( $query_vars[$key] );
}
}
}
return $query_vars;
}
其作用:
它扫描URL以查找以下内容:author=1
找到时,它将从查询变量中删除author变量,因此不会对其进行查询如果使用permalinks,这将使作者档案保持原样。此外,如果URL类似于:/dummy?author=1
这将只显示/dummy
.
感谢Rarst对这个问题的回答https://perishablepress.com/stop-user-enumeration-wordpress/