none
[ASP.NET3.5] 独自ドメインでのResponse.Redirectの相対アドレスの指定 RRS feed

  • 質問

  • 毎度、お世話になります。

    今まで、ASP.NETをIISサーバに登録して、IPアドレス指定で動かしていました。

    (例:http://192.168.123.456/abc/index.aspx)

    今回、独自ドメインを取得して192.168.123.456/abc/までをドメイン名に設定しました。

    (例:http://newdom.jp/index.aspx)

    すると、Response.Redirectでページを変える部分で、404エラーになり、

    要求されたURLに/abc/abc/xxx.aspxと表示され、ブラウザのアドレスも

    http://newdom.jp/abc/xxx.aspxとなって何故か/abc/が付いています。

    ドメイン設定をしている管理者からは、ASP.NET側の問題と言われています。

    Response.Redirect("./xxx.aspx", true);

    Response.Redirect("~/xxx.aspx", true);

    Response.Redirect("xxx.aspx", true);

    の何れも結果は同じです。

    原因が分かりません。どなたか御教授お願いします。

     

    2010年9月30日 9:25

回答

  • > 例が悪かったようですね。

    例もよくないですが、とにかく説明が不足です。どのように説明したら
    問題が理解されるかをよく考えた上で質問していただければと思います。

    依然として詳しい状況が分からないのでハズレかもしれませんが・・・

    > 独自ドメインを取得して192.168.123.456/abc/までをドメイン名に設定

    とは、IIS 側が http://newdom.jp/index.aspx でクライアントから要求
    を受けたら、IIS 内部では http://newdom.jp/abc/index.aspx を取得し
    て応答するように IIS を設定 (URL Rewrite?) したということですか?

    ところが、Response.Redirect("~/xxx.aspx") で HTTP 302 の Location
    は以前と同じ http://newdom.jp/abc/xxx.aspx となり、それを受けたブ
    ラウザはその通り要求する。だから、IIS 側で abc がダブってしまい、
    ページが見つからないというエラーになるということですか?

    だとすると、それは IIS の設定がまずかったということで、ASP.NET で対
    処すべき問題ではないと思います。ダブっていたら 1 つ削除するなどの
    対症療法的なことは出来るかもしれませんが、予期せぬ副作用がありそ
    うでお勧めできません。

    > /abc/は、フォルダではなくIISに登録しているアプリケーションのエ
    > イリアス名です。
    > 現在は、仕方が無いのでIISのdefault web siteの物理フォルダにアプ
    > リのフォルダを設定しています。

    この意味も理解できていませんが、Web アプリもどこかの物理フォルダ
    にあるはずですよね? それを、仮想ディレクトリ/アプリケーションで
    はなく、Web サイトに設定するだけで目的は果たせるのでは?  それな
    ら IIS の設定で簡単に対応可能です。

    そんな単純な話ではなくて、

    > IIS配下のフォルダ /abc/ とかを見せたくないのでしょう。

    の「見せたくない」ということが本来の理由だとすると、サイト全体の
    構成と、それに適した URL 名づけルールをよ~く考えて決めて、URL
    Rewrite という手段を用いるということになると思います。

     

    • 編集済み SurferOnWww 2010年10月1日 13:29 誤記訂正
    • 回答としてマーク マリカ 2010年10月4日 1:14
    2010年10月1日 13:28

すべての返信

  • > 今回、独自ドメインを取得して192.168.123.456/abc/までをドメイン名に設定しました。
    > (例:http://newdom.jp/index.aspx)

    192.168.xxx.xxx というとプライベートアドレスのようですけど、社内の LAN 内からの
    みアクセスする Web サーバーの IP アドレスとドメイン名を、社内の DNS サーバーに
    登録したのですか?

    それにしても、「192.168.123.456/abc/までをドメイン名に設定」ということは聞いた
    ことがありません(無知な自分が知らないだけかもしれませんけど)。

    普通、ドメイン名 newdom.jp に IP アドレス 192.168.123.456 を割り当てて DNS に登
    録ということになると思うのですが・・・

    そのように (newdom.jp = 192.168.123.456) できませんか? そうすれば、たぶん問
    題は解決するのではないかと思います。

    2010年9月30日 13:13
  • 半分自信が無いのですが、abcを仮想ディレクトリとしてルートに割り当ててみてはいかがでしょうか?(仮想ディレクトリのエイリアスって空白とかにできたかなぁ?)


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年9月30日 17:38
    モデレータ
  • いつも、素早いお返事ありがとうございます。

    >192.168.xxx.xxx というとプライベートアドレスのようですけど、社内の LAN 内からの
    >みアクセスする Web サーバーの IP アドレスとドメイン名を、社内の DNS サーバーに
    >登録したのですか?

    例が悪かったようですね。本当のアドレスはプライベートアドレスではありません。

    社内のLANではなく、WEBサービスとして公開して社外からのアクセスがあります。

    なので、IIS配下のフォルダ /abc/ とかを見せたくないのでしょう。

     

    2010年10月1日 0:04
  • > 192.168.123.456/abc/までをドメイン名に設定

    ドメインとしてフォルダを含んだ設定とかできないと思うので、そのドメインにアクセスがきたときに特定のフォルダ以下をみせるようにIIS側で設定したんでしょうね。それならできるかと。ちがうのかな?
    で、そんな変更するならそもそもabcフォルダが存在しないかのようにIIS側の設定をもうちょっと工夫したほうがよかったんじゃないかと思いますが。

    DNSの管理者とIISの管理者とが異なるなら、そのあたりで十分に話しあってみるとよいかと。

     


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2010年10月1日 1:35
  • 皆様、御返事ありがとうございます。

    /abc/は、フォルダではなくIISに登録しているアプリケーションのエイリアス名です。

    現在は、仕方が無いのでIISのdefault web siteの物理フォルダにアプリのフォルダを設定しています。

    結局、この方法で行く事になりそうです。

     

    2010年10月1日 6:55
  • どのページからどのページに遷移したいのか読み取りづらいですが、

    http://example.com/abc/index.aspx から http://example.com/xxx.aspx に遷移したいのでしょうか?

    であれば Response.Redirect( "/xxx.aspx", true ); でどうでしょうか?

    2010年10月1日 7:59
  • > 例が悪かったようですね。

    例もよくないですが、とにかく説明が不足です。どのように説明したら
    問題が理解されるかをよく考えた上で質問していただければと思います。

    依然として詳しい状況が分からないのでハズレかもしれませんが・・・

    > 独自ドメインを取得して192.168.123.456/abc/までをドメイン名に設定

    とは、IIS 側が http://newdom.jp/index.aspx でクライアントから要求
    を受けたら、IIS 内部では http://newdom.jp/abc/index.aspx を取得し
    て応答するように IIS を設定 (URL Rewrite?) したということですか?

    ところが、Response.Redirect("~/xxx.aspx") で HTTP 302 の Location
    は以前と同じ http://newdom.jp/abc/xxx.aspx となり、それを受けたブ
    ラウザはその通り要求する。だから、IIS 側で abc がダブってしまい、
    ページが見つからないというエラーになるということですか?

    だとすると、それは IIS の設定がまずかったということで、ASP.NET で対
    処すべき問題ではないと思います。ダブっていたら 1 つ削除するなどの
    対症療法的なことは出来るかもしれませんが、予期せぬ副作用がありそ
    うでお勧めできません。

    > /abc/は、フォルダではなくIISに登録しているアプリケーションのエ
    > イリアス名です。
    > 現在は、仕方が無いのでIISのdefault web siteの物理フォルダにアプ
    > リのフォルダを設定しています。

    この意味も理解できていませんが、Web アプリもどこかの物理フォルダ
    にあるはずですよね? それを、仮想ディレクトリ/アプリケーションで
    はなく、Web サイトに設定するだけで目的は果たせるのでは?  それな
    ら IIS の設定で簡単に対応可能です。

    そんな単純な話ではなくて、

    > IIS配下のフォルダ /abc/ とかを見せたくないのでしょう。

    の「見せたくない」ということが本来の理由だとすると、サイト全体の
    構成と、それに適した URL 名づけルールをよ~く考えて決めて、URL
    Rewrite という手段を用いるということになると思います。

     

    • 編集済み SurferOnWww 2010年10月1日 13:29 誤記訂正
    • 回答としてマーク マリカ 2010年10月4日 1:14
    2010年10月1日 13:28