【问题标题】:404 response even though I can see data on page404 响应,即使我可以在页面上看到数据
【发布时间】:2014-04-22 16:11:40
【问题描述】:

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

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

基于 url,我们重定向到另一个模板。下面的代码写在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。 google爬取网站时,也是同样的问题。 是不是因为functions.php中写代码的方式?

这个问题会不会是页面标题和url不匹配?

【问题讨论】:

  • 404 只是一个状态码,服务器可以发送任何它想要的内容作为内容。发生的事情基本上相当于绝地思维技巧:“这不是你要找的页面”,尽管它确实是。
  • 这发生在我更新 Apache 时。我相信较新版本的 Wordpress 已经涵盖了它。 - 据我所知,这是因为重写和 apache 检查实际文件 - 不存在 - 因此默认为 404 作为状态消息。
  • 但谷歌无法索引页面。所有这些网址 studyn.us/c-102614-university-of-alaska-fairbanks 也是 sitemap.xml 的一部分。 google 抓取 url 并找不到内容。必须有一条出路。
  • 您使用的是哪个版本的 Wordpress?
  • 我不知道http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI] 是什么意思。

标签: php wordpress


【解决方案1】:

您的问题是 WordPress 仍在继续寻找与 URL 匹配的页面/帖子。当你在处理它时......你必须告诉 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 语句中使用它。

【讨论】:

  • 该解决方案有效。想澄清这是否是解决问题的正确方法,或者我们在页面上强制使用 200 响应代码。
  • 另外,您可以查看注册 wordpress 路由。看看wordpress.stackexchange.com/questions/26388/…
  • Yes 看起来是一个更好的选择。
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 2022-11-24
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多