我们的网站是使用WordPress构建的,我注意到我们的网站不会重定向不存在的子页面路由。
例如,我有一个名为about-us
的页面,该页面的完整URL将是http://example.com/about-us
,然后如果我转到about-us
的不存在的子页面路由,即{{1 }}显示其父http://example.com/about-us/1/
/about-us
应该重定向到WordPress的/about-us/1/
页,因为它不存在。
我在 functions.php 中尝试了以下代码,但仅停止了自动猜测网址
404
任何帮助将不胜感激。谢谢
答案 0 :(得分:1)
当您在URL的末尾添加/(number)/
时(例如在您的情况下,/1/
),WordPress默认将其解析为页面参数。这对于存档页面很有用,但对单个帖子和页面则无用。
您可以通过将此代码添加到functions.php
文件中来检查自己。
function show_wp_query() {
global $wp_query;
echo "<pre>";
die(var_dump($wp_query));
echo "</pre>";
}
add_action('wp', 'show_wp_query');
-------------------------
Top section of the output
-------------------------
["query"]=>
array(2) {
["page"]=>
string(1) "1"
["name"]=>
string(8) "about-us"
}
但是,当您尝试访问任意子页面时,您会看到WordPress实际上正在加载404页面。尝试使用此URL-http://example.com/about-us/sub-page
。
不太好的解决方案:但是,如果您绝对需要实现此行为,我可以向您推荐我所说的不太好的解决方案。
function load_404_page_for_paged_urls() {
global $wp_query;
if( !is_single() && !is_page() ) return;
$page = get_query_var( 'page' );
if( $page > 0 ) {
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();
}
}
add_action('wp', 'load_404_page_for_paged_urls');
希望这对您有用。谢谢。