0

Webクロールを実行しようとしていますが、スラッシュを追加するタイミングの問題に遭遇しました。一部のサイトには最後にそれがあり、一部にはないことを知っていますが、ブラウザに間違ったサイトを入力すると、正しいサイトにリダイレクトされます。正規化は最後にスラッシュを追加しますが、相対URLを絶対URLに変換しようとすると問題が発生します。

たとえば、ユーザーが絶対URLを選択したhttp://stack.com/moreが、実際の(リダイレクト)URLはhttp://stack.com/more/であり、相対URLはindex.html

その後、URL newurl = new URL(url, relativeURL);

収量http://stack.com/index.html(存在しないページ)

実際にあるべきときhttp://stack.com/more/index.html(実際のページ)

最後にスラッシュを正しく追加する良い方法を知っている人はいますか?

4

1 に答える 1

4

相対URLが。で始まる場合/、それはルート(ドメイン)に対してのみ相対的です。だから両方

http://stack.com/more/ + /index.html

http://stack.com/more + /index.html

に正しく解決されます

http://stack.com/index.html

いいえ

http://stack.com/more/index.html

/あなたの例では、の終わりにaがあるかどうかは何の違いもありませんmore

トリックは、相対URLに先頭のスラッシュがない場合に発生しますindex.html。それらを解決するときは、最後のセグメントを削除して、相対パスに置き換えることになっています。その場合、違いが生じるでしょう。

http://stack.com/more/ + index.html

に解決します

http://stack.com/more/index.html

しかし

http://stack.com/more + index.html

に解決します

http://stack.com/index.html

(は最後のセグメントであるため、をindex.html置き換えます)。moremore

于 2012-11-06T11:08:21.263 に答える