0

ユーザーを自分のサイトのサブフォルダーに誘導するいくつかのサブドメインを持つWebサイトがあります。各サブフォルダー内には、いくつかの処理を実行してからユーザーを「../Default.aspx」にリダイレクトするDefault.aspxファイルがあります。

そのページへの完全なURLを入力すると、これは正常に機能します。サブドメインを介してアクセスしようとすると、「..」親が正しく解析されず、サブフォルダーパスをメインパスに連結するだけで、ページが見つかりません。

私のアプリケーションのルートパスはwww.domain.com/rootです。サブドメインがsubdomain.domain.com/root/subfolderを指しているsubdomain.domain.comに移動すると、次のエラーが発生します。

「404-/root/subfolder/root/Default.aspxが見つかりません」

私が欲しいのは、subdomain.domain.comがユーザーを1フォルダーレベル上にwww.domain.com/root/Default.aspxにリダイレクトすることです。

誰か助けてもらえますか?これは共有ホスティングプロバイダーを使用する機能/制限ですか?サブドメインは、それらがポイントされているフォルダーに制限されていますか?

4

2 に答える 2

1

ローカル パスと URL が混在しているため、説明が少しわかりにくいです。あなたがやろうとしているのは正しいですか: Page at subdomain.domain.com/root/subfolder/Default.aspxredirects to www.domain.com/root/Default.aspx?

つまり、次の 2 つのことを行う必要があります。

  1. subdomainサブドメインからサブドメインにリダイレクトしwww
  2. 1 つ上のフォルダーのファイルに移動します。

単一の HTTP リダイレクトで実行できる両方のこと。これにはResponse.Redirectメソッドを使用し、URL で www サブドメインを使用し、表示するページへの正しい絶対パスを使用していることを確認してください。

Response.Redirect("http://www.domain.com/root/Default.aspx");

アップデート

または、同じドメイン内の現在のページに関連する URL にリダイレクトします。

Response.Redirect( Page.ResolveClientUrl( "../Default.aspx" ) );

更新 2

または、Host HTTP ヘッダーを使用してサブドメインを区別し、共有コードベースでプログラムによって切り替えます。

于 2012-09-18T06:48:22.297 に答える
0

答えは、すべてのサブドメインを同じフォルダー (メイン コード ベース) にポイントし、マスター ファイルで、http ヘッダーに基づいて切り替えることです。partner1.domain.com からの場合は css1 を使用し、partner2.domain.com からの場合は css2 を使用します。

これにより、コード全体で相対パスを使用し、ブラウザの URL バーにサブドメインを保持することができます。

1 つの注意点 - 複数の環境 (私は DEV と TST を持っています) でテストしている場合は、どの環境にいるかを検出し、少し異なる方法で動作するコードが必要です。これは、http ヘッダー ホストが「localhost:51510」のようなものを表示するためです。 . 私にとって、これらのサブドメインは本番環境にのみ存在します。

bgever の功績 - ありがとう!

于 2012-09-19T15:28:47.930 に答える