wordpress URL end with a number

2019-02-10 23:41发布

I am not sure if this is a known issue or suppose to be like this performance,

any wordpress website, if you put a number at the end of the URL, for example,

http://perishablepress.com/wordpress-multisite-mamp/

we put 1 or any numbers at the end

http://perishablepress.com/wordpress-multisite-mamp/123

We will not get the NOT FOUND page, we'll still stay at the same page, which is

http://perishablepress.com/wordpress-multisite-mamp/

Is this an error or normal ? how do we redirect to NOT FOUND PAGE instead?

标签: wordpress
1条回答
老娘就宠你
2楼-- · 2019-02-10 23:59

It's not an error, the 123 is interpreted as a pagination parameter:

Request: wordpress-multisite-mamp/123
Query String: page=%2F123&name=wordpress-multisite-mamp
Matched Rewrite Rule: ([^/]+)(/[0-9]+)?/?$
Matched Rewrite Query: name=wordpress-multisite-mamp&page=%2F123

Posts can be paginated with <!--nextpage-->. WordPress displays the content of the last page if no further content is found (or the full post if the post is not paginated).

To redirect to the 404 page when the pagination parameter exeeds the number of pages, drop the following in your functions.php file:

add_action( 'template_redirect', 'so16179138_template_redirect', 0 );
function so16179138_template_redirect()
{
    if( is_singular() )
    {
        global $post, $page;
        $num_pages = substr_count( $post->post_content, '<!--nextpage-->' ) + 1;
        if( $page > $num_pages ){
            include( get_template_directory() . '/404.php' );
            exit;
        }
    }
}
查看更多
登录 后发表回答