HTAccess重定向引发错误:PHP可捕获致命错误:无法将类WP_ERROR的对象转换为字符串

时间:2018-01-26 作者:turzifer

使用.htaccess, 我想301重定向所有以default.aspx 到没有它的版本。例如:

https://example.com/pagename/default.aspx
将重定向到

https://example.com/pagename/
所以我使用下面的rewriteRule 但它抛出了一个500错误:

<IfModule mod_rewrite.c>
RewriteBase /
RewriteRule ^(.*)/default\\.aspx$ $1 [R=301, L]
</IfModule>
错误是:

PHP Catchable fatal error: Object of class WP_Error could not be converted to string in /site/wp-includes/kses.php on line 1248
以及kses中的相关部分。php是:

function wp_kses_no_null( $string, $options = null ) {
    if ( ! isset( $options[\'slash_zero\'] ) ) {
        $options = array( \'slash_zero\' => \'remove\' );
    }

    $string = preg_replace( \'/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/\', \'\', $string ); // line 1248
    if ( \'remove\' == $options[\'slash_zero\'] ) {
        $string = preg_replace( \'/\\\\\\\\+0+/\', \'\', $string );
    }

    return $string;
}
我看不出重写规则和这个错误是如何联系在一起的。并想知道是否有可能进行这样的重定向。

非常感谢。

1 个回复
SO网友:swissspidy

他们之间并没有真正的联系。毕竟这只是一个重定向。

该错误意味着网站中的某些代码错误地传递了WP_Error 反对wp_kses_no_null(). 在您的位置上,我会在这个函数中放入类似的内容进行调试:

if ( is_wp_error( $string ) ) {
  var_dump( $string );
  debug_print_backtrace();
}
通过这种方式,您可以确切地看到错误是什么以及它来自哪里。可能是插件或主题的错误,或者是一些配置错误。

结束