即使我可以在页面上看到数据,也会回复404

时间:2014-04-22 16:11:40

标签: php wordpress

我们正在wordpress上建立一个大学搜索网站,并拥有自己的自定义网页。enter image description here 在搜索结果之后,当用户点击大学链接时,它会打开一个页面 http://studyn.us/c-102614-university-of-alaska-fairbanks 即使我能看到页面上的数据,也不确定为什么网络状态为404。

我已经在Chrome中附加了网络状态的响应。您可以看到我们在页面中也有数据。

根据网址,我们会重定向到另一个模板。在functions.php

中编写的代码下面
function redirect_to_college_template()
{
if( !is_front_page()) :
$url =  "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url = trim($url, '/');
$headURL =  substr($url, strrpos($url, '/')+1);
 $college=explode ("-",$headURL);
  $var=$college[0];
$college=$college[1];
endif;
echo $college;
if($var=='c' & is_numeric($college)!='')
    {
    //echo $college;
        include( get_template_directory() . '/college-page.php' );
        exit();
    }
}
add_action( 'template_redirect', 'redirect_to_college_template' );

我不确定为什么即使显示数据我们也会得到404。当谷歌抓取网站时,这是同样的问题。 是因为代码的编写方式是在functions.php中写的吗?

这个问题可能是因为网页标题与网址不匹配吗?

1 个答案:

答案 0 :(得分:1)

您的问题是WordPress仍在继续查找与该网址匹配的网页/帖子。当你正在处理它时......你必须告诉WP停止寻找其他地方。

global $wp_query;
if($wp_query->is_404){
    $wp_query->is_404=false;
    $wp_query->is_archive=true;
}
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');

您可能会在第二个IF声明中想要这个。