ルートからサブディレクトリへのIIS7URLリダイレクト[クローズ]


83

IIS7でWindowsServer2008を使用しています。私はに来て、ユーザーリダイレクトする必要があるwww.mysite.comのをwwww.mysite.com/menu_1/MainScreen.aspx。これが私がプロジェクトのために持っているファイル構造です:

-Sites
 -Default Web Site
  -Menu_1
  -MenuService
  -VscWebService

私はこれについてどんな助けでも本当に感謝します。


プログラミングとサーバー管理の間には微妙な境界線があります(「DevOps」の人気のおかげで、境界線はますます曖昧になっています)。それでも、スタックオーバーフローとサーバーフォールトは2つのサイトを明確に区別します。このコンテンツは、プログラミングよりもツール(IIS)の構成に関するものであるため、サーバーフォールトに属します。
machineghost

回答:


131

ここにあります。次のコードをweb.configファイルに追加します。

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Redirect" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

301パーマネントリダイレクトを実行します(URLはブラウザで変更されます)。このような「リダイレクト」を非表示にしたい場合(書き換え、内部リダイレクト)、次のルールを使用します(唯一の違いは、「リダイレクト」が「書き換え」に置き換えられていることです)。

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Root Hit Redirect" stopProcessing="true">
                <match url="^$" />
                <action type="Rewrite" url="/menu_1/MainScreen.aspx" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

2
ご回答ありがとうございます。それはまだ私のために働いていません。最初にこれをwwwrootweb.configに追加しましたが、そこでは機能しませんでした。そのため、サーバーレベル([サーバー]> [サイト]> [デフォルトのWebサイト])でURL書き換えを開きましたが、まだ機能していません。私はここで何か間違ったことをしていますか?どうもありがとうございました。
user881148 2011

2
@ user881148ルールは間違いなく機能しています-投稿する前にテストしました。1)たぶんそれは間違った順序/場所に配置されていますか?ルールの順序が重要です。すでにいくつかのルールがある場合は、他のルールの前にこのルールを追加してください。2)「サーバー>サイト>デフォルトのWebサイト」 -サーバーレベルではありません-IISインストーラーによって作成されたデフォルトの通常のWebサイト-それ以上のものではありません。3)GUI(IIS Manager)を使用してこのルールを手動で作成してみてください-簡単です-入力するフィールドはごくわずかです。4)ASP.NETルーティングがすべての書き換えを処理し、URL書き換えモジュールを無視する可能性があります。どういうわけかこの瞬間を確認してください(申し訳ありませんが、私はASP.NETが得意ではありません)。
LazyOne 2011

お返事ありがとうございます。私はあなたが上で述べたすべてをチェックしました、そして他のルールは追加されていません。これを[デフォルトのWebサイト]> [URL書き換え]から追加しようとしましたが、どちらも機能しませんでした。また、ASP.NETの再ルーティングも設定していません。
user881148 2011

1
@mythofechelonはい。IIS10(Windows 10 / Windows Server 2016)を使用しても、URL書き換えモジュールはバンドルされていないため、個別にインストールする必要があります。
LazyOne 2018

1
<match url = "^ \ /?$" />を使用して、URLの末尾に/がユーザーによって示されている場合に確実に機能するようにすることをお勧めします。
MarijusRavickas19年

47

これは、IISURL書き換えモジュールなしで実行できると思います。<httpRedirect>ワイルドカードをサポートしているため、次のように構成できます。

  <system.webServer>
    <httpRedirect enabled="true">
      <add wildcard="/" destination="/menu_1/MainScreen.aspx" />
    </httpRedirect>
  </system.webServer>

IISで「HTTPリダイレクト」機能を有効にする必要があることに注意してください。HTTPリダイレクトを参照してください。


これは完全に機能します。
ニック

16

主にそのコードをどこに入力するかわからなかったため、受け入れられた回答でこれを機能させることができませんでした。意味のあるURL書き換えツールの説明をどこでも探しましたが、見つかりませんでした。IISでHTTPリダイレクトツールを使用することになりました。

  1. あなたのサイトを選択してください
  2. IISセクションで[HTTPリダイレクト]をクリックします(ロールサービスがインストールされていることを確認してください)
  3. 「リクエストをこの宛先にリダイレクトする」にチェックを入れます
  4. リダイレクトする場所を入力します。あなたの場合「wwww.mysite.com/menu_1/MainScreen.aspx」
  5. リダイレクト動作で、「リクエストをこのディレクトリ内のコンテンツにリダイレクトするだけです(サブディレクトリではありません)。そうしないと、ループに入ります。何が機能するかを確認してください。

お役に立てれば。


1
このソリューションには問題があります。リダイレクト/再書き込みに設定した場合http://server/http://server/Folder/アクセスし、http://server/Folder(音符末尾スラッシュ)にリダイレクトされるhttp://server/Folder/Folder可能性が高い404返された、
arid1

これに取り組んでからしばらく経ちましたが、それが私に起こっていたことと、私のステップ#5の理由を覚えているようです。チェックしましたか?
ジャロッド2014年

1
正直思い出せませんが、そう信じています。上記の私の場合、IISは/ Folderをディレクトリではなくファイルと見なすため、サブディレクトリにリダイレクトされ、「(サブディレクトリではない)」除外の対象にならないことに注意してください。
arid1 2014

4

これをMicrosoftからダウンロードする必要があります:http//www.microsoft.com/en-us/download/details.aspx?id = 7435

このツールは「IIS7用のMicrosoftURL書き換えモジュール2.0」と呼ばれ、Microsoftによって次のように説明されています。「URL書き換えモジュール2.0は、要求されたURLがWebサーバーによって処理される前に変更し、応答コンテンツを変更するためのルールベースの書き換えメカニズムを提供します。 HTTPクライアントに提供される前に」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.