Google カスタム検索の結果で、HTTP ではなく HTTPS 形式を強制的に使用しようとしています。API ドキュメントを調べましたが、この変更を行う方法を見つけることができませんでした。古い GCSE では HTTP または HTTPS を指定できたのを覚えていますが、Google がそれを更新して以来、指定できなくなっているようです。
http://www.google.com/cse/cse.jsを調べて、すべての HTTP オカレンスを HTTPS に変更し、www.google.com /jsapiと V1 と V2 の両方の方法を切り替えてみました。しかし、私は成功していません。
関連性があるかどうかにかかわらず、すべての HTTP の出現箇所を掘り下げて HTTPS に変更しましたが、すべての検索結果が目的の HTTPS アドレスではなく HTTP アドレスにリンクされたままです。
編集:コード
私は V1 または V2 を使用することにオープンです。それは問題ではありません。
V1コードは次のとおりです。
<div id='cse' style='width: 100%;'>Loading</div>
<script src='//www.google.com/jsapi' type='text/javascript'></script>
<script type='text/javascript'>
google.load('search', '1', {language: 'en', style: google.loader.themes.DEFAULT});
google.setOnLoadCallback(function() {
var customSearchOptions = {};
customSearchOptions['overlayResults'] = true;
customSearchOptions['adoptions'] = {'layout' : 'noTop'};
var customSearchControl = new google.search.CustomSearchControl('MySearchID', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setAutoComplete(true);
customSearchControl.draw('cse', options);
}, true);
V2コードは次のとおりです。
<script>
(function() {
var cx = 'MySearchID';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'https:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
上記の Javascript を変更し、V1 および V2 セクションの Javascript ソースを Google の代わりに私の JS を使用するように置き換えてみましたが、それでも問題は解決しませんでした。私はおそらく何かを見落としています..
何か案は?
ありがとう!
編集#2
朗報です、理解できました。
V1 コードを使用する場合、次のコードを追加できます。
google.search.Csedr.addOverride("mysite_");
このコードを含む行のすぐ上:
customSearchControl.draw('cse', options);
既存の Google CSS を上書きします。それを行った後、次のような独自の CSS を作成しました。
<div class="gs-title">
<a class="gs-title" data-attr="{href:unescapedUrl.replace('http://','https://'),target:target}" data-body="html(title.replace('mySiteTitle :: ', ''))"></a>
</div>
結果には引き続き HTTP が表示されますが、ツールチップには HTTPS が表示され、適切な HTTPS ページに移動します。
評判が 10 未満であるため、すぐには自分の質問に答えることができませんが、この機能が利用可能になった数時間後に回答済みとしてマークします。