2013-09-26 50 views
6

我正在努力使基於AJAX的網站適合搜索引擎優化。由於在網絡上的教程建議,我已經添加了「漂亮」 href屬性鏈接:<a href="#!site=contact" data-id="contact" class="navlink">контакт</a>,並在內容默認加載與AJAX一個div,用於抓取一個PHP腳本:如何處理?_escaped_fragment_ =用於AJAX搜尋器?

$files = glob('./pages/*.php'); 

foreach ($files as &$file) { 
    $file = substr($file, 8, -4); 

} 

if (isset($_GET['site'])) { 
    if (in_array($_GET['site'], $files)) { 
     include ("./pages/".$_GET['site'].".php"); 
    } 
} 

我有一種感覺,在開始時我需要另外削減_escaped_fragment_=部分從(...)/index.php?_escaped_fragment_=site=about因爲否則該腳本將無法GET值從URL的site,我是對嗎?

但是,無論如何,我怎麼知道抓取工具會將漂亮的鏈接(與#!)轉換爲醜陋的鏈接(包含?_escaped_fragment_=)?我被告知它會自動發生,我不需要提供此映射,但Googlebot抓取功能不會提供有關URL發生情況的任何信息。

回答

14

谷歌機器人將自動查詢?_escaped_fragment_=的網址。

所以從www.example.com/index.php#!site=about 谷歌機器人將查詢:www.example.com/index.php?_escaped_fragment_=site=about

在PHP的網站,你會得到它作爲$_GET['_escaped_fragment_'] = "site=about"

如果你想要得到的「地盤」的價值,你需要做這樣的事情:

if(isset($_GET['_escaped_fragment_'])){ 
    $escaped = explode("=", $_GET['_escaped_fragment_']); 
    if(isset($escaped[1]) && in_array($escaped[1], $files)){ 
      include ("./pages/".$escaped[1].".php"); 
    } 
} 

在文檔看看:

https://developers.google.com/webmasters/ajax-crawling/docs/specification

+0

我害怕是這樣工作的,只是在時間,當你回答我已經完成了我重寫網站上的版本不'網站=';)無論如何,感謝吹我的疑惑了! –

+0

如果你想google bot,在沒有哈希的ajax頁面上爬行,你可以添加到你的網頁頭部 – calmbird

+0

我的站點在每個包含聯繫表單的頁面上顯示。我使用Ajax提交表單。我該怎麼辦 。如何刪除#!以及來自url的?_escaped_fragment。這些網址只有當我使用A1站點地圖生成工具時纔會出現。這是從SEO的角度來看問題,請大家幫忙 –