wordpress URL end with a number

2019-02-10 23:30发布

问题:

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?

回答1:

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;
        }
    }
}


标签: wordpress