2011-01-11 3 views
6

https://stackoverflow.com//////////questions/4659504/が有効なURLであることがわかりました。ただし、https://www.google.com//////////analytics/settingsはありません。これを説明するWebサーバー技術には、固有の違いがありますか?不要なスラッシュを含むURLが正しく解釈されるべきか、エラーを返すべきか?URLの不要なスラッシュはありますか?

+0

間違ったことを示すフラグは無視してください。 – cybermonkey

答えて

4

まず、スラッシュを追加すると、他の文字のようにURLパスのセマンティクスが変更されます。したがって、定義によって/foo/bar/foo//barは等価ではありません/foo/bar/foo/bar/は同等ではありません。 /foo//bar/foo/barであるよう

しかし、URLパスが主に直接ファイルシステムにマッピングするために使用されているので、ウェブサーバは、多くの場合、空のパスセグメントを削除するには、(Apacheがことがない) は等価を扱います。しかし、これは期待される行動ではありません。むしろエラー訂正のために行われます。

+0

同じものを削除するための.htaccessルールを提供できますか? – rahijain

+0

RewriteRule ^%1%3 [L、R = 301] 'RewriteRule%{REQUEST_URI} ^((^ /?)+ /)*)/ +(。*) – Gumbo

2

これらは両方とも有効なURLです。
しかし、Googleのサーバーは2番目のサーバーを処理できません。

スラッシュが重複しているURLを処理したり拒否する特別な理由はありません。より重要なことに多くの時間を費やす必要があります。

+0

Googleのサーバーは何もできませんか? – Gumbo

+2

これは明らかに重要である場合の例です。http://www.mydigitallife.info/2008/07/21/redirect-or-rewrite-to-remove-double-or-multiple-slashes-in-url/ –

+0

@Gumbo:修正済み。ありがとう。 – SLaks

0

すべてのアプリケーションが要求をどのように処理するかに違いがあります。リクエストをルーティングする前にスラッシュを置き換えるようにアプリを設定した場合、問題はないはずです。

1

「正しく解釈されました」とはどういう点ですか? HTTPは、サーバ名が解釈された後のスラッシュの前のものが本当にどのように指定されているかだけです。残りの部分は完全にWebサーバーに依存します。それはあなたがそれを(それが好きな方法で)その点の後に与えるものを解析し、そのテキストを提供するようなHTMLをあなたに贈ります。

関連する問題