基于this answer 我创建了一个函数来更改来自域的短链接。tld?p=435到域。tld/435和重定向域。tld/435至域。tld/全永久性:
function shorter_shortlink() {
global $post;
$shortURL = get_bloginfo(\'url\').\'/\'.$post->ID;
if(!empty($shortURL)) {
return $shortURL;
} else {
return get_bloginfo(\'url\').\'/?p=\'.$post->ID;
}
}
add_filter(\'pre_get_shortlink\', \'shorter_shortlink\');
add_action( \'wp\', function(){
global $wp;
if( is_numeric( $wp->request ) && empty( $wp->query_vars[\'page\'] ) )
{
wp_redirect( get_permalink( absint( $wp->request ) ), 301 );
exit();
}
});
在测试时,这种方法似乎不是性能最佳的方法。我想知道是否有更好的解决办法?
最合适的回答,由SO网友:Nicolai Grossherr 整理而成
我担心这里的答案是,重定向永远不会带来好的性能。尤其是通过PHP来实现,因为它处理得很晚。
您可以考虑通过apache来实现,尤其是.htaccess
文件,在PHP/WordPress发挥作用之前就截获了。这会更好,但当然这仍然是一个重定向。但正如@birgire在他的comment, 你需要具体/准确的规则,所以这不是很实用。
另一个想法,做一些javascript“魔术”,同样comment.
如果你问我这不值得,要么重定向,要么不重定向,就决定吧。