21

私が作成していた小さな Web サイト (いじりのようなもの) では、AJAX を使用して各ページを読み込みます。以前は、URL のハッシュを変更していましたが、これはうまく機能しましたが、見苦しく、ユーザーがページを更新しても、同じページにとどまってしまいました。

今、私は JS History API で pushState を使用するように切り替えました。これは見た目がはるかに良く、前後は機能しますが、更新は機能しません。例えば:

行く:http://example.com/page2ページ 2 と呼ばれる実際のページがないため、404 に移動します。しかし、pushState メソッドを使用して URL を変更するボタンをクリックすると、正常に機能します。

新しい履歴 API で更新とパーマリンクを許可するにはどうすればよいですか?

(そして、検索エンジンはこれをどのように扱うのでしょうか。Google は開発者に#!.

4

3 に答える 3

18

を使用pushStateして無効な URL をプッシュしないでください。サイトが AJAX の有無にかかわらず動作する場合に使用することを意図しています。つまり、AJAX でこの出力を作成するときに、AJAX なしで同じ出力になる URL をプッシュします。

仮想 URL のみが必要な場合 (pushState 以前の時代のように)、ハッシュ タグを使用し続けます。

于 2011-05-09T23:11:22.370 に答える
8

これはやや古い質問ですが、Google の検索結果のトップの 1 つでした。役立つことを追求して、これが私の解決策です。

Apache の Mod_Rewrite を使用して、URL を中央の場所に書き換えることができます。以下に例を示します。

<ifModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^([^/\.]+)/?$ index.php?page=$1&full=1 [L]
</ifModule>

index.php で:

<?php
  if(isset($_GET['full']) {
    //Generate the full page here
  }else{
    //Generate just the content for AJAX
  }
?>

このページは、mod_rewrite を使用して Web サイト全体をリダイレクトするための優れた入門書です。(コメント 11 と 13 にも便利な追加機能があります)

于 2011-12-05T22:02:14.483 に答える
2

404エラーをサイトのホームページ(AJAXリクエストをロードするもの)にリダイレクトしてから、URLの最後のコンポーネントを取得し、AJAXリクエストを使用してページをロードするjavascript関数を実行する必要がありました。優れたソリューションではありませんが、うまく機能しているようです。

于 2011-05-09T22:26:21.233 に答える