AJAXディープリンクサイトを構築しています。
ユーザーがJavascriptでサポートされていないブラウザーを使用してサイトにアクセスしようとしている場合、または検索クローラーである場合は、PHPでページのすべてのHTMLコードをロードする必要があります。基本的に、PHPはページ全体を返します。
それどころか、ユーザーがJavascriptでサポートされているブラウザーでサイトにアクセスしようとしている場合、PHPがテンプレートコードのみを返し、残りはJavascript(AJAX)に任せたいと思います。基本的に、PHPはデザイン要素のみをロードし、Javascriptがそれらにコンテンツを入力できるようにします。
PHPの機能を調べましget_browser()
たが、それほど信頼できるツールではないようです。ブラウザがJavascriptをサポートしているか、PHPを使用した検索クローラーであるかを確認する業界の慣習は何ですか?
背景:
サイトにこの動作をさせたい理由。
example.com
PHPにクエリを送信しないアドレス:をロードするだけでホームページをロードしたいので、PHPはホームページのHTMLコードを返します。ただし、これにより、ユーザーが次のページを読み込もうとすると問題が発生しますexample.com#foo
。したがって、この例では、PHPはホームページを返し、ホームページが読み込まれると、Javascript(AJAX)がコンテンツを変更して、次の適切なコンテンツを表示します。#foo
。これにより、ユーザーはホームページを見ることができるようになるため、読み込み時間が遅くなり、ユーザーエクスペリエンスはそれほど良くありません。ただし、私のPHPスクリプトが、Javascriptでサポートされているブラウザを使用してページを読み込もうとしている場合、コンテンツを含まないWebサイトのテンプレートのみが返されることを理解できれば、javascriptはそのテンプレートにコンテンツを入力します。 #fooに表示されるはずです。一方、Javascriptの分離されていないブラウザまたはクローラーがページにアクセスしようとすると、ホームページexample.com#foo
が返されます。
ディープリンクにSWFaddress(http://www.asual.com/swfaddress/)ライブラリを使用しています。
編集
君たちありがとう。以前は使うことを考えていませんでした<noscript></noscript>
。
これが私がやろうと決心したことです。PHPはデフォルトで、example.com
または(定義上フラグメントはサーバーに送信されないため、PHPの観点からexample.com#foo
は本質的に同じです)などのページをロードします。ホームページのコンテンツのタグが内部にある空白(ビジュアルテンプレートのみ)。このように、javascriptを使用しているユーザーにはホームページが表示されず、AJAXはフラグメントに従ってページのコンテンツにデータを入力します。一方、検索クローラーとjavascriptのないユーザーには、ホームページが表示されます。example.com
<noscript>
#foo
ありがとうございました。これは非常にシンプルでエレガントなソリューションだと思います。さらに提案がある場合は、コメントまたは別の回答を投稿してください。