問題タブ [hashbang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - Hashbang、prereder.io、ロボット
検索ボットが私の ajax サイトをどのようにクロールするのか、少し混乱しています。
http://www.example.comには 3 つのリンクが含まれています
- #!/abc
- #!/xyz
- #!/123
ページの先頭にが<meta name="fragment" content="!">
含まれているため、ロボットは次の URL を使用してこれらのリンクにアクセスする必要があり、prerender.io を使用してページを提供しています。
- http://www.example.com?_escaped_fragment_=/abc
- http://www.example.com?_escaped_fragment_=/xyz
- http://www.example.com?_escaped_fragment_=/123
これらのページをクロールするとき、ロボットはどのように動作しますか? これらのページで新しいリンクを見つけたとき、URL はどのように見えるでしょうか?
- #!/abc1 => http://www.example.com?_escaped_fragment_=/abc#!/abc1
- #!/abc2 => http://www.example.com/#!/abc/abc2
php - Wix から WordPress への 301 リダイレクト
私が働いている会社には、WIX ベースのサイトがありました。WordPress でサイトを再作成し、ホスティングを移動してドメインをリダイレクトしました。次に、標準の .httaccess ファイル 301 リダイレクトを使用して、WordPress サイトの新しい URL へのページ リダイレクトを試みました。
リダイレクト 301 /#!product/prd1/1063533171/42%22-workstation-(mc-42) http://www.mydomain.com/product/workstation/
WIX が URL リンク構造でハッシュバン (#!) を使用していることがわかりました。
301 リダイレクトを実行して以前のページ ランクを維持するにはどうすればよいですか?
ajax - ホスティングに _escaped_fragment_ を検出させ、対応する HTML をフェッチさせるにはどうすればよいですか?
私は AJAX サイトを持っており、Google ボットが #! ?_escaped_fragment_ を使用。
_escaped_fragment_ を含む URL を対応する HTML ページにルーティング/プロキシ/リダイレクトするにはどうすればよいですか? プロセスのこの部分に関する具体的なドキュメントが見つかりません。最初は、301 または 302 リダイレクトを使用する必要があると考えていましたが、それ以上の情報は提供されていませんが、そうではないと言われました。
javascript - history.pushState は本当にハッシュ バン URL に対応していますか?
最近、ハッシュバン URL と history.pushState を比較して、SEO に適した AJAX サイトを構築する方法についてよく読みました。pushState の方が優れているという意見が多いようですので、私はそれを使いたいと思っています。
ここに問題があります: 私は単一ページの Web サイトと (サーバー上に) 約 300 万のエントリを持つデータベースを持っています。これらすべてのエントリの静的ページはありませんが、AJAX でそれらをフェッチしてサイトに挿入します (ユーザーが特定のリンクをクリックするか、検索を実行します)。
HashBang-URL を使用すると、Spider が別の URL (escaped_fragment など) を検索することがわかっているため、サーバー側では、スタイルを含まず、インデックスに登録したいコンテンツのみを含む「醜い」ページを提供できます。
URL が異なり (#!…)、Javascript がコンテンツを生成するため、ユーザーは URL をブックマークしてきれいなコンテンツを取得できます。
一方、history.pushState では、「…getItem.php?itemid=356375」のような URL を使用せざるを得なくなりますが (そうですか?)、ユーザーがこれらの URL をブックマークする可能性があるため、ここで醜いコンテンツを提供することはできなくなりました。 .
つまり、一言で言えば:
Hash-Bang を使用すると、「醜い」コンテンツのみのページを検索エンジンに提供しながら、JavaScript を介したクライアント側のプリティ コンテンツ レンダリングに集中できます。
そのための回避策はありますか?サーバー側 (私の場合は PHP) できれいなコンテンツを提供する必要がなく、ユーザーが (Javascript を介して) きれいなコンテンツを提供する URL をブックマークできるようにする方法はありますか?
angularjs - angularjs の IE8 および IE9 で #hashbang リダイレクトを無効にする方法
2 つの個別の html ページで構成される angularjs (v 1.2.19) アプリケーションがあります (または、実際にはこれらは 1 つのフォルダーにある 2 つの個別の angularjs アプリです)。
- index.html
- edit.html
IE 8 と 9 でよく知られた互換性の問題がいくつかあります (どちらも html5 履歴 API をサポートしていません)。私の設定には以下が含まれます:$locationProvider.html5Mode(true).hashPrefix('!');
アプリケーションにルーティングはありません-index.htmlとedit.htmlは、個別のangularjs初期化などを持つ個別のangularjsアプリと見なすことができます.
問題は次のようになります: リンクを開くたびに:http://server/app
またはhttp://server/app/index.html
すべて正常に動作します。
リンクを開くたびに:http://server/app/edit.html
ng-clickから、またはブラウザで直接、ページは自動的にリダイレクトされますhttp://server/#!app/edit.html
「ハッシュバン」リダイレクトを無効にするにはどうすればよいですか? Edit.html は index.html の一部ではないため、index.html のリダイレクトや「ハッシュ」ルーティングなしで直接ロードする必要があります。
以下のコードを試しましたが、リダイレクトの無限ループにつながります...
どんな助けでも感謝します。