4

ユーザーが example.com と言って www.example.com にしかアクセスできないようにしたいのですが、IIS 6 を使用しています。

これはどこかの設定ですか、それともサブドメインが着陸してリダイレクトされるときにチェックするようにコーディングする必要がありますか?

編集: 最善の方法は www プレフィックスから離れることですが、なんらかの理由でユーザーが URL に www なしでコース (これは LMS) を開始した場合、.asmx ファイルの追跡は機能しません。 「www」を強制しようとしている理由は、それを持っていない人がいると、なぜ追跡が機能しないのか疑問に思うからです。

4

11 に答える 11

6

ASP.NET を使用している場合は、HttpModule を作成し、BeginRequest イベントを処理して、ハンドラー内に次のコードを追加します。

HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;

if (context.Request.Url.Host == "example.com")
{
context.Response.Clear();
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", "http://www.example.com" + context.Request.RawUrl);
}

Response.Redirect() を使用しなかったことに注意してください。これは SEO のために行われます。Response.Redirect() は常にステータス 302 を返します。これはオブジェクトが一時的に移動されたことを意味し、ステータス 301 はオブジェクトが完全に移動されたことを意味します。あなたのページの PageRank が www バージョンと非 www バージョンの間で分割されないようにします (検索エンジンのクローラーが www と非 www URL の両方を使用してページにアクセスできる場合、ページランクを 2 つに分割するため、検索エンジンのクローラーが理解し、PageRank をサイトの www バージョンのみに維持する 301 の使用)。

于 2009-02-04T09:20:21.400 に答える
5

両方のレコードがすでに正しいサーバーを指しているため...

...単純に IIS で新しい Web サイトをセットアップし (サーバー バージョンが必要)、example.com (ホスト ヘッダーの設定) のみに応答させ、必要な URL にリダイレクトさせることができます ([ホーム ディレクトリ] タブの [URL へのリダイレクト] を確認します)。 www.example.com と入力します)。その後、元のサイトがそれを処理する必要があります (より具体的には、www.example.com に応答するようにホスト ヘッダーを設定できます)。

Web サーバーでそれができない場合は、公開ファイアウォールでできるはずです。そうでない場合は、それを置き換えることを検討してください。あなたのDNSプロバイダーは、リダイレクトサービスを提供するかもしれません(しゃれは意図していません)(基本的に上記と同じことをしていると思います)。

于 2009-02-03T23:02:15.173 に答える
4

他の応答と同様に、装飾されていないドメイン名からwww.プレフィックス付きのサイトへの301リダイレクトを手配します。

www.私が実際にDNS業界で働いていることを考えると、この議論についての私の見解を共有したいと思います。

今のところ、少なくとも私見では、URLの優先バージョンにはプレフィックスが付いている必要があります。www.URLのホスト名部分はまさにそれであり、ホスト名です。ブラウザが検索するDNSリソースレコードはA(場合によってAAAAはIPv6の)レコードのみであり、結果のIPアドレスは接続先のIPアドレスになります。

これはWebサイトのアドレスではありませんhttp://。完全なURL(プレフィックス付き)のみが、このホストがポート80でHTTP接続を受信することを期待していることを指定します。

そもそもプレフィックスの理由は、www.さまざまなプロトコルをさまざまなホストに分離できるようにするためでした。Verisignが数年前に(簡単に)「SiteFinder」サービスを導入したときに示したように、Aレコードのすべての要求がHTTPプロトコルの使用に関するものであると仮定すると、大きな間違いです。

URLの正規バージョンをプレフィックス付きのものにすると、 www.Cookieの処理も簡単になり、静的コンテンツをコンテンツ配信ネットワーク(Yahoo!、Googleなどで推奨されている)に簡単に分割できます。

現在、DNSレコードタイプ(RFC 2782SRVを参照)があり、サービスとトランスポートプレフィックスを使用して、単一のドメイン名がさまざまなプロトコルをさまざまなホスト(したがってIPアドレス)にディスパッチできるようにします。

理想的なDNS設定は、次のようなレコードになります。

_http._tcp.example.com IN SRV 10 0 80 www.example.com.

これは、TCP /IPを介したHTTPURIのすべての要求は、ホスト名 www.example.comのTCPポート80にアドレス指定する必要があることを示しています。この構文を使用すると、ポート番号をURLに含めずに、ポート80以外のポートからHTTPサービスを自動的にサーバー化することもできます。

SRVレコードはSIPの必須部分であり、Jabber(XMPP)で一般的に使用されます。ただし、AFAIKではブラウザはそれを使用しません。:(

于 2009-02-03T23:55:35.643 に答える
0

これは、あなたがすべきかどうかに関係なく、それがどのように機能するかです。

これはDNSによって処理されます。通常、example.comとwww.example.comは同じサーバーを指しますが、そうである必要はありません。www.example.comが明示的に登録されていない場合、リクエストはexample.comサーバーに送信され、そのサーバーはwww.example.comと、mail.example.com、ftp.exampleの意味を決定します。 .com、home.example.com、users.example.comなど。

編集:最近、Apacheはあなたが使用していたURLを受け取り、そこからサブドメインを解釈してリクエストを仮想サイトに転送する可能性があるため、この話は不完全であることに気付きました。しかし、これは「www」レベルの要因ではありません。

于 2009-02-03T22:41:21.533 に答える
0

ホスト (またはドメイン レジストラ) に連絡して、www. ただし、必要に応じて、双方向または片方向のみで機能する必要があります。私はあなたがホストを持っていて、独自の Web サーバー/ドメイン名登録を実行していないと仮定しています (笑)。

于 2009-02-03T22:32:11.817 に答える
0

Apache ベースのサーバーの場合、このコードを使用できます

RewriteEngine On    
RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com$ [NC]    
RewriteRule (.*) http://www.yourdomain.com/$1 [R=301,L]

説明: 最初の行は、書き換えエンジンをオンにするだけです。コードの 2 行目は、ユーザーが入力した URL をチェックするためのものです。バッシュ記号 (!) は、等しくないことを意味します。にんじん記号 (^) は、チェックするステートメントの始まりを意味します。バックスラッシュ ドット (.) はドットの特殊文字を指し、バックスラッシュなしで使用すると「何でも」を意味します。ステートメントの最後のドル記号は、URL の末尾を示します。3 番目のステートメントは、ユーザーによって与えられた入力がステートメント 2 で与えられたものではない場合、次のように進むことを示しています。(.*) は、何回でも何回でもという意味です。これは、yourdomain.com/ の後にユーザーが書いたものを変数 $1 に保存するために使用されます。R=301 は永続的なリダイレクトを指し、L はこれが一連のステータス コードの最後であることを示します。

于 2014-11-29T18:16:04.550 に答える
0

Web サイトでこれを行う典型的な方法は、example.com から www.example.com への HTTP リダイレクトを行うことです。これを行うには、ユーザーが example.com にアクセスしたときに HTTP ステータス コード 301 (永続的なリダイレクト) または 302 (一時的なリダイレクト) を返し、http://www.example.comへの応答で HTTP location: フィールドを設定します。「301 対 302」を Google で検索して、いずれかを使用する必要がある場合を確認してください。

これは HTTP 機能であり、DNS によって提供されるものではないことに注意してください... ただし、一部のドメイン名プロバイダーは、ネームサーバーを使用する場合に HTTP リダイレクト機能を提供します。

これを自分でテストできることに注意してください。http://web-sniffer.netに移動し、yahoo.com (または microsoft.com または主要な Web サイト) と入力します。それらが www バージョンの名前でリダイレクトに応答することがわかります (あまり一般的ではありませんが、一部の Web サイトは別の方法で、www を www 以外のバージョンの名前にリダイレクトします)。

于 2009-02-03T22:59:41.200 に答える
0

私の Web サイトでは、以下を .htaccess ファイルに追加しました。

RewriteEngine on
RewriteBase /
RewriteCond   %{HTTP_HOST}   ^tafkas\.net$   [NC] 
RewriteRule   ^(.*)$  http://www.tafkas.net/$1   [L,R=301]
于 2009-02-03T23:58:56.633 に答える
0

Microsoft の Web スタックで作業するという不運に見舞われたとき、 ISAPI_Rewriteを使用して www. プレフィックス(とりわけ)。

于 2009-02-03T23:02:45.407 に答える
-3

述べたように、WWW を追加することは進行方向とは逆です。最近のWWWは冗長です。

詳細については、 http://no-www.org/を参照してください。

于 2009-02-03T22:36:28.687 に答える
-4

これは実際には逆です。これは 1998 年に彼らが行った方法でしたが、今では何かあればwww をドロップすることになっています。

また、example.com は、例の URL を投稿するために特別に予約されています。あなたが提供したものを誰かが実際に所有し、使用している可能性があります。そのランダムな例で、誰かをポルノやマルウェアのサイトに誘導していないことをどのように確認できますか?

于 2009-02-03T22:32:05.077 に答える