URL変数のスラッシュ


106

私のcoldfusionアプリケーションを設定して、ページに次のような動的URLを設定しました

www.musicExplained/index.cfm/artist/:VariableName

ただし、私の変数名には、スラッシュが含まれる場合があります。

www.musicExplained/index.cfm/artist/GZA/Genius

私のアプリケーションは、変数名のスラッシュがWebサイトの別のセクション、アーティストのアルバムを表すと想定しているため、これが問題を引き起こしています。したがって、URLは失敗します。

とにかくこれを防ぐための方法があるのでしょうか?変数名のスラッシュを別の文字に置き換える関数を使用する必要がありますか?


4
これらは通常のスラッシュです。バックスラッシュではありません。
Caleb Hearth

回答:


175

スラッシュをエスケープする必要があります%2F


これは良い考えのようですが、%2Fを使用する明確な理由はありますか?
namtax 2010年

1
これは標準のURLエンコーディングです。
SLaks、

44
IISは引き続きこれをaとしてインターセプトし/、ルートを切断します。:(
Piotr Kula

21
Apacheはこれを/と解釈し、AllowEncodedSlashesディレクティブがオンになっている(デフォルトではオフになっている)場合を除き、ルートを切断します
chim

5
encodeURIComponentdecodeURIComponentをこの目的で使用できます。
Keavon

17

スラッシュ/_、Wikipediaがスペースに使用するような下線のようなものに簡単に置き換えることができます。特殊文字をアンダースコアなどに置き換えるのが一般的な方法です。


4
これは一般的な方法ですが、最善の方法ではありません。すべてのブラウザーがこれを理解し、すべてのサーバーがこれを理解し、すべての開発者がこの方法で学習する必要があるため、エスケープ文字の使用がベストプラクティスです。アンダースコアはSEOにも適していません。私もこれをやっていて、それが戻ってきてあなたを強く刺すという難しい方法を学んだので、私はただこれを言っています。
Piotr Kula 2014年

1
@ppumkin-なぜそう思いますか?エスケープ文字を使用することは、ユーザーフレンドリーではなく、非技術系ユーザーにとっては奇妙に見えるURLを生成するため、実際にはベストプラクティスではありません。私は、URLをできるだけ賢明に保つことを試みるのが最善だと思います
vsync

UNderscores ARE BAD FOR SEOコメントに関して。アンダースコアはGoogleによってアンダースコアとして解釈され、ダッシュ/ハイフンはスペースとして解釈されます。どうして?コーダー、多くのコーダーはGoogleを使用しています(初期の頃からGoogle自体を含む)。アンダースコアをスペースとして扱うとfoo_bar、検索結果内で(おそらく何らかのクラスの)見つけることができなくなります。何とか何とか...結論:あなたが「最適化」している検索エンジンが実際にどのように機能するかを理解していれば、アンダースコアはSEOにとって悪くない。
ウィリアムIsted

8

それらをエスケープする必要がありますが、%2F手動で置き換えるだけではありません。URLEncoderこれに使用できます。

例えば URLEncoder.encode(url, "UTF-8")

その後、あなたは言うことができます

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")

9
関数URLEncoderは、Chromeなど一部のブラウザーでは定義されていません。したがってencodeURIComponentw3schools.com

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.