2012-02-04 6 views
2

私はColdFusion 8.0.1とjQuery 1.4.3を使用しています。URLを小文字に書き換える方法と、サーバーでダブルヒットしない方法はありますか?

jQueryを使用してCFCにAjaxリクエストを作成するコードを開発しています。私が作成した各Ajaxリクエストは実際にサーバーに2回提出されたことに気付きました。 (私はFirebugでこれを観察した。)最初のヒットは小文字に強制された。 2度目のヒットは、今小文字だったが、書き直しに失敗した。

私は上司に尋ねたところ、URLをすべて小文字にしてCFHEADERを使って301リダイレクトしたapplication.cfmファイルのコードを指摘しました。私はそのコードと私のAjaxリクエストはうまくいきました。

SEOのために、application.cfmまたはin htaccessファイルの書き換えを使用して、すべての要求を強制的に小文字にする必要があります。

私はhtaccessのファイル内の関数のこのタイプを実行するために非常に良いアイデアであることを理解しています。

私の質問は、実際にはCFHEADERと同じように、htaccessファイルを使用してURL書き換えが実際にページを2回読み込むかどうかです。私は月曜日までこのコードで作業することはできません。そのオプションと最善の答えを知りたいと思います。

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

RewriteEngine On 
RewriteMap lowercase int:tolower 
RewriteCond $1 [A-Z] 
RewriteRule ^/(.*)$ /${lowercase:$1} [R=303,L] 

ありがとうございました!

+2

リダイレクトの任意の並べ替えを行う場合は、2つの要求があります。それはあなたが求めていることですか?これは、リダイレクトの全体のポイントのようなものです。ブラウザが別のURLで別のリクエストを行うように指示します。 – Pointy

+0

ダブルヒットを防ぐための作業は、使用しているクライアントのプラグインを作成し、それを小文字にしたい特定のURLを監視してから変更する必要があります。そしてそのような種類のサーバーベースの変更には、何らかの形式のリダイレクトが必要であり、@ Pointyが述べたように、常に2つの要求が発生します。 – Drahkar

答えて

1

EvikのURLに大文字が含まれている場合は、リダイレクトしか取得できませんので、AJAXリクエストURLが完全にあなたの制御下にある場合は、すべて小文字で始まることを確認してください。

これに加えて、代わりに、リライトがあなたのAJAXリクエストに対して起こらないように、リライトリターンにいくつかのリライトコンドームを置くことができます。これらは、SEOの目的のために何らかの修正が必要な要求の種類ではありません。したがって、単にSEOの目的を変更する必要はありません。

+0

私はこのプロジェクトのコントロールが限られているため、答えの最初の段落は実際には適用されません。あなたの答えの後半は頭の爪に当たります。私はこれを渡します。ありがとう!!! –

0

Googleアナリティクスを使用している場合は、アカウント設定btwにすべての統計を大文字または小文字として記録することができます。私は似たようなことをしますが、私もGAコードの下位の正規表現を使用します。

+1

Thesは統計情報ではなく、要求されているURLについてのものであり、URL間の一貫性を維持しているため、検索エンジンによって正しくインデックスされます。 –

1

いいえ、それはサーバーのダブルヒットしない、それだけで(書き換え)が要求しているURLを変更します。なぜなら、my last questionでは、サーバーをダブルクリックする必要があるときに、.htaccessだけではそれを行うことができず、PHPヘッダーに頼らざるを得ませんでした。

編集:私は、スクリプトを実行し、ページをロードするわけサーバーをダブルヒットによります。 .htaccessでURLを書き換えると、ブラウザに何も返されないので、すべての書き換え条件が満たされている、URLがリダイレクトされていない、書き直されているだけなので、望ましい効果が得られるはずですそれ。

それを行うために他の方法は、下部ケースに文字列を変換します。この

ajax_url = 'http://ExaMple.CoM'; 
ajax_url = ajax_url.toLowerCase(); 

のようなものを実行してAjaxリクエストを送信する前には、JavaScriptにあるであろう。

+0

情報ありがとうございます。私はこのような私の要求をしていません。問題は私が制御できるものよりもツリーの上に存在します。私は問題を解決する方法についていくつかの助言を与える必要があった。あなたの例は固いアドバイスですが、それはいくつかの理由で私の問題を解決することはできません。ありがとう! –

関連する問題