jQueryを使用して、すべてのhttp://www.mywebsite.com/page/を訪問者のhttp://www.mywebsite.com/#pageにし、Facebook URL Linter(http:/ /developers.facebook.com/tools/lint)は引き続きhttp://www.mywebsite.com/page/のタグを読み取ることができますか?
2 に答える
私はあなたの質問を完全に理解しているかどうかわかりません。クライアント側のライブラリは、ブラウザにサーバーから別のページをフェッチさせずに、URLのパス部分を変更することはできません。
したがって、ユーザーがhttp://www.mywebsite.com/page/にアクセスした場合、クライアント側のJavaScriptを使用してユーザーをhttp://www.mywebsite.com/#page/にリダイレクトできますが、それではブラウザにページhttp://www.mywebsite.com/をロードさせてから、そのページで#pageフラグメントを見つけようとします。ブラウザにhttp://www.mywebsite.com/#page/をリロードさせたい場合は、それが実際に起こります。
FBはページ上でjavascriptを実行しないため、FBがhttp://www.mywebsite.com/page/にアクセスすると、それが表示されます(通常のブラウザーのようにリダイレクトされません)。
javascriptを使用して強力なリダイレクトを実行する場合は、次のコードをページに配置できます。
var path = window.location.pathname;
if (path.search(/^\/page\/?$/) >= 0) {
window.location.replace("http://www.mywebsite.com/#page/");
}
このコードは、ページのURLのパス名がであるかどうかをテストし、/page
そう/page/
である場合はリダイレクトを実行します。
<script>
$(window).load(function(){
var pieces = location.href.split('/');
if (pieces[3].indexOf('#!') !== 0) {
if (location.href.indexOf('#!') != -1) {
pieces = location.href.replace('#!','').split('/');
}
pieces[3] = '#!/'+pieces[3];
location.href = pieces.join('/');
}
});
</script>