2011-08-08 6 views
0

私は、フォームを持つウェブページ用のPyramidアプリを持っています。フォームのPOSTの後にwindow.location = XXXを使用していましたが、これはSEOに優しいとは言えませんでした。jQueryとPyramidによるURLリダイレクト?

したがって、私はサーバー側でリダイレクトしようとしています。私がしたことは、mydomain.com/redirectのピラミッドアプリにビューを追加することです。このアドレスに行くことは先のページに301を返します。

return HTTPMovedPermanently(location=location) 

、私のWebページでは、私は/リダイレクトページにjQueryのPOSTを追加しました。火かき棒を見ると、ポストは実際に起こりますが、それは301のバックを取得し、次にブラウザは目的地のページを取得しますが、物理的にリダイレクトしません。何が欠けていますか?

+0

可能な場合、任意のリダイレクトのためのMODリライトを使用し、usualy 302です。 – Calum

答えて

0

jQueryは、3xx応答を受け取ったときにブラウザをリダイレクトしません。これは、AJAXリクエストのリダイレクトにのみ従います。これはXmlHttpRequestの標準的な動作であり、変更することはできません。

JavaScriptでフォームを送信したり、HTTPリダイレクトを使用したり、JavaScriptを使用したり、肯定的な応答を受け取ったときにはwindow.locationを使用したりすることができます。

この種のことを行う通常の方法は、クライアントがJavaScriptを最初に持っていないと仮定することです。 JavaScriptを使用せずにすべてが機能すると、JavaScriptを追加してJavaScriptを使用するユーザーにとってより良いエクスペリエンスになります。

つまり、フォームのサブミット後にクライアントをリダイレクトする場合は、単にAJAXを使用することはできません。検証する必要がある場合は、フォームが有効になるまでJavaScriptでフォームのサブミットを防ぐことができます。

また、提出されたフォーム後にリダイレクトするためのステータスコードはない301

+0

お返事ありがとうございます。これは実際にフォームではありません。私はオートコンプリートボックスを持っています。ユーザーが値を選択すると、適切なページにリダイレクトする必要があります。したがって、

atributeはありません。どうすればいいですか?もう一度、私はSEOフレンドリーではないので、私はwindow.locationを使用することはできません..どのように実際にリダイレクトするブラウザを伝えることができますか? – Aviv

+0

あなたがそれをやろうとするようにしても、とにかくSEOフレンドリーではありません。クローラはオートコンプリートボックスに物を入力しようとはしません。 window.locationを使用する必要があります。あなたのサイトがSEOフレンドリーになるようにするには、あなたのサイトが障害者によって使用されているかのようにコーディングしてください。この自動補完ボックスがないと、サイトのすべてのセクションにアクセスできることを確認してください。どこかのセクションごとにリンクがあると、クローラはそのページを見つけることができ、障害のある人はあなたを愛するでしょう。 –

関連する問題