2014-04-22 43 views
1

我們正在wordpress之上建立一個大學搜索網站,並有我們自己的自定義頁面。 enter image description here 搜索結果後,當用戶點擊學院鏈接時,會打開一個頁面 http://studyn.us/c-102614-university-of-alaska-fairbanks 不知道爲什麼網絡狀態是404,即使我可以看到頁面上的數據。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編寫的嗎?

這個問題可能是因爲頁面的標題與url不匹配嗎?

+1

404只是一個狀態碼,服務器可以發出任何它想要的內容。發生了什麼事情基本上就像絕地精靈一樣:「這不是你要找的那一頁」,儘管它確實如此。 –

+0

更新Apache時發生這種情況。我相信Wordpress的新版本已經涵蓋了它。 - 據我所知,這是因爲重寫和Apache檢查實際文件 - 哪些不在那裏 - 因此默認爲404作爲狀態消息。 –

+1

但谷歌無法索引頁面。所有這些網址http://studyn.us/c-102614-university-of-alaska-fairbanks也是sitemap.xml的一部分。谷歌爬網的網址,無法找到內容。必須有一條出路。 – vsingh

回答

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語句中。

+0

解決方案有效。想澄清這是否是解決問題的正確方法,或者我們強制在頁面上顯示200響應代碼。 – vsingh

+0

另外,你可以看看註冊一個WordPress的路線。看看http://wordpress.stackexchange.com/questions/26388/how-to-create-custom-url-routes –

+0

是的,看起來更好的選擇。 – vsingh

相關問題