私はこの質問を書いていましたが、その過程で少し難しく考える必要があり、自分で答えましたが、なぜそれが解決したのかはまだ完全には理解できません.
2 つのドメインが登録されている共有ホストにアカウントがあります。Asp.Net スタックを使用して、ブログや最終的に開始する予定の別のサイトなど、いくつかのことを実行しています。私のドメインはどちらもルートを指しています。1 つ目はサインアップに使用したオリジナルで、2 つ目は追加したルート ドメイン ポインターです。これが私がそれをどのように動作させたいかです:
ディレクトリ構造:
ルート (www.domain1.com) ルート --\ ブログ (www.domain1.com/blog) ルート --\ Site2 (www.domain2.com の場合はここに誘導する必要があります) ルート --\ Site2 --\ ジャンク (www.domain2.com/junk)
現在、www.domain1.com または www.domain1.com/blog と入力すると、期待どおりに動作し、問題ありません。www.domain2.com の場合、(web.config から) 次のように構成された書き換えルールがあります。
<rule name="Domain2">
<match url="(.*)(/)?" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="(www\.)?domain2\.com" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="/site2/{R:1}" />
</rule>
そのルールは、ホストが domain2.com である場合に任意のパスに一致するはずであり、要求されたリソースへのパスを選択して適切にフォーマットします。そのため、誰かが IIS で www.domain2.com/junk/default.aspx と入力すると、ユーザーが知らないうちに www.domain2.com/site2/junk/default.aspx に解決されます。これは、ユーザーがサブフォルダーに末尾のスラッシュを入力しない場合を除いて、宣伝どおりにほとんど機能しています。いいえ:
www.domain2.com (動作する)
www.domain2.com/ (動作する)
www.domain2.com/junk/ (動作する)
www.domain2.com/junk (動作しない!) IIS 7 はここで頭脳を失い、フォーマットする末尾のスラッシュに対して 2 番目のリクエストが自動的に発行され、404 が発生するため、www.domain2.com/site2/junk のようになります。
そこで、アクションを次のように更新しました。
<action type="Rewrite" url="/site2/{R:1}/" />
これで解決したようですが、IIS 7 が www.domain2.com/junk2/default.aspx/ を吐き出さないのはなぜですか? ドキュメント拡張子に末尾のスラッシュを追加しないことをどのように知るのでしょうか?