禁用WordPress URL自动完成

时间:2013-03-24 作者:Luke

我最近注意到Wordpress试图在URL未完全提交时自动完成URL。E、 g.我有一个帖子URL,如下所示:

http://www.mysite.com/some-post-title
如果我浏览到以下URL:

http://www.mysite.com/some-post-ti
我可以看到URL已提交到Wordpress,但Wordpress正在执行301重定向到http://www.mysite.com/some-post-title.

如何禁用此行为?

4 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我相信这就是redirect_canonical 连接到的函数template_redirect. 您应该能够通过以下方式禁用它:

remove_filter(\'template_redirect\', \'redirect_canonical\'); 
但您应该真正考虑是否要这样做,因为这相当复杂,并且执行一些重要的SEO功能:

根据站点URL将传入链接重定向到正确的URL。

搜索引擎考虑www.somedomain。com和somedomain。com是两个不同的URL,当它们都指向同一位置时。此SEO增强通过将所有传入链接重定向到其中一个来防止对重复内容的惩罚。

防止重定向提要、trackback、搜索、注释弹出窗口和管理URL。不在支持IIS 7、页面/后期预览、WP管理、Trackbacks、robots的非漂亮permalink上重定向。txt、搜索或POST请求。

当用户输入一个基于WordPress查询不存在的URL时,也会尝试查找正确的链接。将尝试解析URL或查询,以找到要转到的正确页面。

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/canonical.php#L13

以下内容might 在不影响SEO组件的情况下消除自动完成功能,但我不能保证这一点。The code is barely tested 因为我从未想过要禁用此功能。我真的要学习了redirect_canonical 确保一切。

function kill_404_redirect_wpse_92103() {
  if (is_404()) {
   add_action(\'redirect_canonical\',\'__return_false\');
  }
}
add_action(\'template_redirect\',\'kill_404_redirect_wpse_92103\',1);

SO网友:FitPM

让这种“猜测”自动发生似乎是非常不负责任的。如果有某种方法来定义哪个页面是正确的,我会更加开放。

我有许多页面是按顺序构建的,这种自动猜测是错误地选择了(随机)响应页面在序列中的某个位置,与起始页相反。

更新:这是已知行为,此处正在考虑:https://core.trac.wordpress.org/ticket/16557

SO网友:wrydere

作为FitPM回答的后续行动,我们创建了一个插件来禁用自动猜测行为。

截至2017年8月2日,我在Wordpress 4.8上运行良好。插件位于此处:https://wordpress.org/plugins/disable-url-autocorrect-guessing/

SO网友:David Vielhuber

注意:如果禁用redirect\\u canonical(例如remove_action(\'template_redirect\', \'redirect_canonical\');), 随机链接,如https://tld.com/some-random-string/blogpost 还工作(内容https://tld.com/real-category-slug/blogpost 显示)。

如果您想防止这种情况发生,并在这些随机URL上返回404,请使用

add_filter( \'redirect_canonical\', function( $redirect_url ) {
    $url = \'http\'.((isset($_SERVER[\'HTTPS\'])&&$_SERVER[\'HTTPS\']!==\'off\')?\'s\':\'\').\'://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
    if( $redirect_url !== $url ) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
    }
    return false; 
});

结束

相关推荐

提交表单后WP_REDIRECT不起作用

我在插入帖子后使用此重定向。它不工作,只刷新表单所在的页面。我知道$pid正在获取帖子ID,那么问题是什么?这是我处理表单提交的php代码的最后一部分。$pid = wp_insert_post($new_post); update_post_meta($pid,\'domain\',$domain); update_post_meta($pid,\'keywords\',$keywords); wp_redirect( get_permalink($pid)