web-dev-qa-db-ja.com

IISでURLパスをリダイレクトする方法は?

IIS 6.0では、パスへのリクエストを別のフォルダーにリダイレクトし、残りのパスを保持する簡単な方法があります。

例えば.

コンテンツを次の場所から移動した場合:
mysite.org.uk/stuff

stuff.mysite.org.uk/

次のような特定のページのリクエストを自動的にリダイレクトできますか
mysite.org.uk/stuff/countrybriefing/tanzania/travel.html

stuff.mysite.org.uk/countrybriefing/tanzania/travel.html

.htaccessでApacheでこのようなことができることを知っていますが、IISに同等のものはありますか?

37
codeulike

Microsoft Technet から取得。

IIS 6.0(IIS 6.0)のWebサイトのリダイレクト


ブラウザーがWebサイト上のページまたはプログラムを要求すると、WebサーバーはURLで識別されるページを見つけて、ブラウザーに返します。 Webサイトのページを移動するとき、ページの古いURLを参照するすべてのリンクを常に修正できるとは限りません。ブラウザが新しいURLでページを確実に見つけられるようにするには、ブラウザを新しいURLにリダイレクトするようにWebサーバーに指示できます。

あるディレクトリのファイルに対する要求を、別のディレクトリ、別のWebサイト、または別のディレクトリの別のファイルにリダイレクトできます。ブラウザが元のURLのファイルを要求すると、Webサーバーは新しいURLを使用してページを要求するようブラウザに指示します。

重要

次の手順を実行するには、ローカルコンピューターのAd​​ministratorsグループのメンバーである必要があります。セキュリティのベストプラクティスとして、Administratorsグループにないアカウントを使用してコンピューターにログオンし、runasコマンドを使用してIIS Managerを管理者として実行します。コマンドプロンプトで、runas/user:Administrative_AccountName "mmc%systemroot%\ system32\inetsrv\iis.msc"と入力します。

手順

要求を別のWebサイトまたはディレクトリにリダイレクトするには


  1. IIS Managerで、ローカルコンピューターを展開し、リダイレクトするWebサイトまたはディレクトリを右クリックして、[プロパティ]をクリックします。

  2. [ホームディレクトリ]、[仮想ディレクトリ]、または[ディレクトリ]タブをクリックします。

  3. [このソースのコンテンツの取得元]で、[URLへのリダイレクト]をクリックします。

  4. [リダイレクト先]ボックスに、宛先ディレクトリまたはWebサイトのURLを入力します。たとえば、カタログディレクトリ内のファイルに対するすべての要求をNewCatalogディレクトリにリダイレクトするには、/ NewCatalogと入力します。

すべてのリクエストを単一のファイルにリダイレクトするには


  1. IIS Managerで、ローカルコンピューターを展開し、リダイレクトするWebサイトまたはディレクトリを右クリックして、[プロパティ]をクリックします。

  2. [ホームディレクトリ]、[仮想ディレクトリ]、または[ディレクトリ]タブをクリックします。

  3. [このソースのコンテンツの取得元]で、[URLへのリダイレクト]をクリックします。

  4. [リダイレクト先]ボックスに、宛先ファイルのURLを入力します。

  5. Webサーバーが元のファイル名をリンク先URLに追加しないようにするには、[上記で入力した正確なURL]チェックボックスをオンにします。

    宛先URLでワイルドカードとリダイレクト変数を使用して、元のURLを宛先URLに変換する方法を正確に制御できます。

    また、リダイレクトメソッドを使用して、特定のディレクトリ内のファイルに対するすべての要求をプログラムにリダイレクトすることもできます。通常、元のURLからプログラムにパラメーターを渡す必要があります。これは、リダイレクト変数を使用して実行できます。

    リクエストをプログラムにリダイレクトするには


  6. IIS Managerで、ローカルコンピューターを展開し、リダイレクトするWebサイトまたはディレクトリを右クリックして、[プロパティ]をクリックします。

  7. [ホームディレクトリ]、[仮想ディレクトリ]、または[ディレクトリ]タブをクリックします。

  8. [このソースのコンテンツの取得元]で、[URLへのリダイレクト]をクリックします。

    [リダイレクト先]ボックスに、プログラムにパラメーターを渡すために必要なリダイレクト変数を含むプログラムのURLを入力します。たとえば、Scriptsディレクトリ内のスクリプトに対するすべての要求を、要求されたURLとURLで渡されたパラメーターを記録するログプログラムにリダイレクトするには、/ Scripts/Logger.exe?URL = $ V + PARAMS = $ Pと入力します。 $ Vと$ Pはリダイレクト変数です。

  9. Webサーバーが元のファイル名をリンク先URLに追加しないようにするには、[上記で入力した正確なURL]チェックボックスをオンにします。

32
Dmitri Farkov

以下の方法でリダイレクトURLをフォーマットします。

stuff.mysite.org.uk$S$Q

$Sは、すべてのパスを新しいURLに適用する必要があると言います。 $Qは、パラメーター変数を新しいURLに渡す必要があることを示します。

IIS 7.0では、オプションRedirect to exact destination。 IIS 6.0もこのようなオプションが必要だと思います。

35
Nirmal

作成するリダイレクトの負荷が多い場合、場所に仮想ディレクトリの負荷を保持することは、維持するのに悪夢です。 ISAPIリダイレクトとIIS拡張機能を使用してみてください。その後、リダイレクトはすべて1か所で管理されます。

http://www.isapirewrite.com/docs/

また、正規表現などに基づいてパターンを一致させることもできます。何百ものページをリダイレクトする必要がある場所を使用して、多くの時間を節約しました。

4
Jon Jones

ISAPI_Rewrite の設定は次のとおりです。

RewriteBase /

RewriteCond%{HTTP_Host} ^ mysite.org.uk $ [NC]

RewriteRule ^ stuff /(.+)$ http://stuff.mysite.org.uk/$1 [NC、R = 301、L]

1
TonyCool