私のサイトは単一ページのWebアプリです。 AJAXアプリケーションをクロール可能にする に基づいた提案に従っています。
私のURLは次のようになります:
http://domain.com/#!pages/contactUs
私の理解は:
http://domain.com/#!chair/12
はhttp://domain.com/?_escaped_fragment=chair/12
に移動します
このプロジェクトではサーバー側のスクリプトを使用していないため、アプリケーションの状態でHTMLページを作成し、次のようなフォルダーに配置しました。
http://domain.com/htmlFiles/1.html
Apacheでは、_escaped_fragment_=
を含むリクエストを適切なhtmlページに転送しました。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=chair\/([\w]*)
RewriteRule ^(.*)$ htmlFiles/%1.html? [R=302,L]
転送は正しく機能し、_escaped_fragment
URLが使用されている場合は適切なページが表示されます。
Googleに送信したサイトマップは次のようになります。
<url>
<loc>http://domain.com/#!pages/contactUs</loc>
<lastmod>2012-12-30</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
問題はこれです。HTMLファイルを含むhtmlFiles
フォルダ全体(http://domain.com/htmlFiles/1.html
)がGoogleでインデックス付けされます。これらのページは、実際のページに含まれるコンテンツをGoogleに示すためだけにあります。
私のウェブサイト全体が
http://domain.com/
これらのページは検索結果に表示されないはずです。彼らがきれいなURLのみをインデックスに登録すると言っていましたが、それでも、他の何かを妨げるかどうかはわかりませんので、これらのページを削除するのは嫌です。
302は正しいリダイレクトではなく、代わりに301を使用する必要があるのでしょうか?
また、そもそもこのリダイレクト方法に何か問題がありますか?
Googleの仕様で正確に指定されているように、コンテンツを提供するために?_escaped_fragment_ =を呼び出したときに302リダイレクト(ただし、301リダイレクト)を使用することはできません。実装で見られる問題は、HTMLファイルに、リダイレクトされたページに関連するリンクや、他のHTMLファイルを直接指すリンクが含まれている可能性があることです。たとえば、HTMLファイルにhttp://yourdomain.com/htmlFiles/1.html
(または1.htmlのように相対的なもの)を指すhrefがある場合、このページはGoogleによってインデックス付けされます。
手短に言うと、サイトマップから始めて、Googleはページを正しくインデックス付けする必要がありますが、GoogleがHTMLファイルによって提供されるリンクを使用する場合、Googleはおそらく元の#とは関係なく直接インデックス付けします! urls。
ここには、問題を解決するためのさまざまな解決策があります。
リダイレクトを使用しないでください。あなたの場合、それは不要だと思われますが、HTMLファイルがリクエストされたときにGoogleに直接送信できます。 Apache書き換えルールのRフラグを削除するだけです。さらに、このソリューションは、リダイレクトメカニズムにより、Googleとサーバー間の不要なラウンドトリップを回避します。これにより、ユーザー(およびGoogle)の帯域幅とCPUサイクルが節約されます。
HTMLファイルのさまざまなhrefに正しいリンクがあることを確認してください。すべてが#を指している場合!バージョン、それは動作するはずです。
各HTMLファイルに、#!のコンテンツへの正規リンクを追加します。 ( http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=139394 )。これにより、Googleが正しいURLをインデックスに登録するのに役立ちます。
注:これらのソリューションはそれぞれ個別に機能する必要がありますが、それらの一部とすべてを組み合わせることもできます。