2013-10-24 53 views
0

我使用mod_rewrite得到SEO友好的URL使用jQuery.load()與mod_rewrite的

RewriteEngine on 
RewriteBase/
RewriteRule ^([^/\.]+)/?$ /page.php?page=$1 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /page.php?page=$1&sub=$2 [L] 

所以我可以加載http://foo.com/food/local。很好的工作,但它會加載整個頁面,並且客戶端想要添加一個持續跨頁面加載的流媒體播放器。

所以我嘗試切換到加載與jQuery.load(所有內容)

<script> 
    $(".ajax").click(function(e) { 
     e.preventDefault(); 
     $('#contentMain').load($(this).attr("href"), function() {console.log("Load was performed."); }); 
    });   
</script> 

我能得到這個我的整個頁面加載到#contentMain但我感到困惑如何保持,而SEO網址加載只剝離內容的剝離版本的PHP。

例如來到http://foo.com/food/local會加載整個頁面,但點擊與href /食品/外國從http://foo.com/food/local鏈接沒有打到page.php每個mod_rewrite,但只是民意調查content.php相同的參數?我應該重建page.php以某種方式識別上下文嗎?

此外,當你使用這種方法,然後你通過AJAX更新元描述和標題?或只要http://foo.com/food/local可以蜘蛛並有正確的元信息沒有關係?

+1

你應該讓所有的鏈接完好無損並鏈接到頁面。然後使用jQuery「捕捉」這些鏈接的點擊事件並重新加載內容(也可以使用javascript在地址欄中設置網址)。這是最好的解決方案,因爲如果用戶沒有啓用javascript,它也可以工作 –

+2

在php中,檢測請求是否是ajax請求。如果是,請返回精簡版,否則返回完整版。 http://davidwalsh.name/detect-ajax –

+0

@KevinB多麼優秀的資源!這只是讓我的生活變得更輕鬆! – jerrygarciuh

回答

2

如果這是一個ajax調用爲什麼不只是訪問非朋友page.php鏈接?它應該仍然可以訪問。你可以添加一個數據屬性給你的頁面鏈接href's:

<a href="/food/local/" data-ajax="page.php?page=$1">Local Food</a> 

無論如何,只是一個想法。

+0

這工作得很好!謝謝!你對頁面元數據有什麼看法?你會更新還是單獨留下,因爲蜘蛛不會被AJAX導航。 – jerrygarciuh

+1

太棒了!我不會太擔心meta ......就像你說蜘蛛只會抓取整個頁面一樣。也許考慮改變頁面標題。 U可以添加另一個數據或標題屬性。 – wutang

+1

即document.title = $(this).attr(「title」) - 並且在A標籤中擁有標題也適用於SEO – wutang