DOBON.NET

相対URLから絶対URLを取得する、絶対URLから相対URLを取得する

相対URLから絶対URLを、あるいは絶対URLから相対URLを決定するのは、自力では大変です。しかし.NET Frameworkでは、Uriクラスを使うと簡単にできます。ここではその方法を紹介します。

相対URLから絶対URLを取得する

まずは、相対URLから絶対URLを取得する方法を紹介します。下の例では、「http://www.dobon.net/vb/」を基準にした時の「top.html」の絶対URLを取得しています。

VB.NET
コードを隠すコードを選択
'基準になるURLのUriオブジェクトを作成する
Dim u1 As New Uri("http://www.dobon.net/vb/")
'u1を基にして、相対URL"top.html"のUriオブジェクトを作成する
Dim u2 As New Uri(u1, "top.html")
'u2の絶対URLを表示する
Console.WriteLine(u2.AbsoluteUri)
'結果: "http://www.dobon.net/vb/top.html"
C#
コードを隠すコードを選択
//基準になるURLのUriオブジェクトを作成する
Uri u1 = new Uri("http://www.dobon.net/vb/");
//u1を基にして、相対URL"top.html"のUriオブジェクトを作成する
Uri u2 = new Uri(u1, "top.html");
//u2の絶対URLを表示する
Console.WriteLine(u2.AbsoluteUri);
//結果: "http://www.dobon.net/vb/top.html"

基準URLと相対URLをいろいろ変更した時、上記の方法では絶対URLがどのようになるかを調べた結果を以下に示します。

基準となるURL相対URL取得される絶対URL
http://www.dobon.net/vb/t.gifhttp://www.dobon.net/vb/t.gif
http://www.dobon.net/vb/dt/i.htmhttp://www.dobon.net/vb/dt/i.htm
http://www.dobon.net/vb/../i.htmhttp://www.dobon.net/i.htm
http://www.dobon.net/vb//t.gifhttp://www.dobon.net/t.gif
http://www.dobon.net/vb/./i.htmhttp://www.dobon.net/vb/i.htm
http://www.dobon.net/vb/http://www.microsoft.com/http://www.microsoft.com/
http://www.dobon.net/vb/http://www.dobon.net(エラー)
http://www.dobon.net/vb/http://www.dobon.net/katte/(エラー)
http://www.dobon.net/vb/http://vb.dobon.net/(エラー)
http://www.dobon.net/vb/i.htm../i.htmhttp://www.dobon.net/i.htm
http://www.dobon.net/vb../i.htmhttp://www.dobon.net/../i.htm

絶対URLから相対URLを取得する

絶対URLから相対URLを取得するには、UriクラスのMakeRelativeUriメソッド(.NET Framework 1.1以前は、MakeRelativeメソッド)を使います。以下の例では、「http://www.dobon.net/vb/」を基にした「http://www.dobon.net/vb/dotnet/index.html」の相対URLを取得しています。

VB.NET
コードを隠すコードを選択
Dim u1 As New Uri("http://www.dobon.net/vb/")
Dim u2 As New Uri("http://www.dobon.net/vb/dotnet/index.html")
'u1を基にしたu2の相対URLを表すUriオブジェクトを作成する
Dim relativeUri As Uri = u1.MakeRelativeUri(u2)
'相対URLを取得する
Dim relativeUrl As String = relativeUri.ToString()
'.NET Framework 1.1以前では次のようにする
'Dim relativeUrl As String = u1.MakeRelative(u2)

Console.WriteLine(relativeUrl)
'結果: dotnet/index.html
C#
コードを隠すコードを選択
Uri u1 = new Uri("http://www.dobon.net/vb/");
Uri u2 = new Uri("http://www.dobon.net/vb/dotnet/index.html");
//u1を基にしたu2の相対URLを表すUriオブジェクトを作成する
Uri relativeUri = u1.MakeRelativeUri(u2);
//相対URLを取得する
string relativeUrl = relativeUri.ToString();
//.NET Framework 1.1以前では次のようにする
//string relativeUrl = u1.MakeRelative(u2);

Console.WriteLine(relativeUrl);
//結果: dotnet/index.html

基準URLと絶対URLをいろいろと変更して、どのように相対URLが取得されるかを調べた結果を以下に示します。

基準となるURL絶対URL取得される相対URL
http://dobon.net/vb/http://dobon.net/vb/dt/i.htmdotnet/i.htm
http://dobon.net/vb/dt/i.htmhttp://dobon.net/vb/../
http://dobon.net/vb/http://dobon.net/vb/dt/i.htmdotnet/i.htm
http://dobon.net/vb/dt/i.htmhttp://dobon.net/vb../../vb
http://dobon.net/vbhttp://dobon.net/vb/dt/i.htmvb/dt/i.htm
http://dobon.net/vb/dt/i.htmhttp://dobon.net/katte/top.jpg../../katte/top.jpg
http://dobon.net/katte/top.jpghttp://dobon.net/vb/dt/i.htm../vb/dt/i.htm
http://dobon.net/vb/dt/i.htmhttp://www.microsoft.comhttp://www.microsoft.com/
http://www.microsoft.comhttp://dobon.net/vb/dt/i.htmhttp://dobon.net/vb/dt/i.htm
  • 履歴:
  • 2006/11/20 表を追加。
  • 2007/1/24 .NET Framework 2.0に関する記述を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。