我在我的网站上使用Google自定义搜索,配置为两页:当表单从第1页发送到第2页时,第2页显示SERP。这是我的第2页:
<script>
(function() {
var cx = '00000000000';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchresults-only queryParameterName="query"></gcse:searchresults-only>
</script>
只要第二页是“经典”/page2.php?query=searchTerm,一切正常。
现在我想使用mod_rewrite切换到友好/ page2 / searchTerm。规则本身已经完成,但我无法理解如何编辑Google脚本以使其理解现在参数是mod_rewritten或如何使用类似gcse.searchTerm ='这就是我要搜索的内容。
不推荐使用API v1,因此我需要坚持使用API v2。
任何帮助?
答案 0 :(得分:3)
我认为你不需要那个。为什么你想要搜索引擎友好的搜索结果URL?据我所知,搜索引擎优化,您不希望您的搜索结果在Google,Bing等上以结果显示。
在我看来,www.example.com/search?q=test
更加友好,而且#34;比www.example.com/page2/test
更为明显,因为它更加明显。 (搜索结果页面。)
但是,也许我忽视了一些事情,好的。
可能有更好的方法,但我认为这也应该有效:
<script>
var searchFromURL = function() {
var element = google.search.cse.element.getElement('searchfromurlgname');
// you can echo query with PHP or get it from window.location
element.execute( window.location.pathname.replace('/page2/', '') );
};
var myCallback = function() {
if (document.readyState == 'complete') {
searchFromURL();
} else {
google.setOnLoadCallback(searchFromURL, true);
}
};
window.__gcse = {
callback: myCallback
};
(function() {
var cx = '013315504628135767172:d6shbtxu-uo';
// Insert your own Custom Search engine ID here
var gcse = document.createElement('script'); gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:searchbox-only></gcse:searchbox-only>
<gcse:searchresults-only gname="searchfromurlgname"></gcse:searchresults-only>
<!-- switch CSE layout to "two page" -->
https://developers.google.com/custom-search/docs/element#tagparams