私はこの質問を書いており、その過程で、少し難しく思うようになりました。私はそれを解決した理由を完全に理解していません。IIS 7のURL書き直しと2つのドメイン
私は2つのドメインを登録した共有ホストにアカウントを持っています。私はAsp.Netスタックを使用してブログやいくつかのサイトを運営しています。両方のドメインはルートを指しています。最初は私がサインアップするのに使用したオリジナルです、2番目は私が追加したルートドメインポインタです。期待と私のように振る舞うこと、
Root (www.domain1.com) Root --\ Blog (www.domain1.com/blog) Root --\ Site2 (should be directed here if www.domain2.com) Root --\ Site2 --\ Junk (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であれば任意のパスと一致するようになっている、パスをピックオフ要求されたリソースに転送し、適切にフォーマットします。したがって、誰かがwww.domain2.com/junk/default.aspxをIISに入力すると、これはユーザーが知らないうちにwww.domain2.com/site2/junk/default.aspxに解決されます。これは、ユーザがサブフォルダに末尾のスラッシュを入力しない場合を除き、のほとんどはです。 IE:
www.domain2.com(作品が)
www.domain2.com/(作品)
www.domain2.com/junk/(作品)
www.domain2.com/junk(doesnのIIS 7はここでその頭脳を失い、www.domain2.com/site2/junkのようにフォーマットします。後続のスラッシュに対して2回目のリクエストが自動的に発行され、404が発生するからです。
だから、私はするアクションを更新:
<action type="Rewrite" url="/site2/{R:1}/" />
これは、それを解決しているようだが、なぜないIIS 7は今www.domain2.com/junk2/default.aspx/を吐き出すのですか?ドキュメントの拡張子に後続のスラッシュを追加しないことをどうやって知っていますか?