複数の .NET Web サイトをホストする Web サーバーがあります。私が設定した方法は、サーバーのルートに、そのコンテンツを含む各サイトのフォルダーが含まれるようにすることです。次に、ルート ディレクトリに web.config を配置して、URL を処理し、ユーザーがアクセスするサイトに応じて適切なフォルダーにユーザーを誘導します。
ルートディレクトリ:
- \SiteA
- \SiteB
- \web.config
web.config は次のようになります。
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="SiteA" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?.siteAdomain\.com$" />
</conditions>
<action type="Rewrite" url="\SiteA\{R:0}" />
</rule>
<rule name="SiteB" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^(www\.)?.siteBdomain\.com$" />
</conditions>
<action type="Rewrite" url="\SiteB\{R:0}" />
</rule>
</rules>
</rewrite>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
</configuration>
SiteA も ASP.NET メンバーシップを使用しています。
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="~/account/login.aspx" />
</authentication>
問題は、SiteA にアクセスすると認証が開始され、loginUrl にリダイレクトされることです。ただし、404 の原因となっている SiteA フォルダーではなく、ルート フォルダーに関するパスを解決しています。
調べたところ、このサイトは、これが .NET 3.5 SP1 でパッチが適用されたバグであると述べています。ただし、私のホスティング サービスは IIS 8.0 を実行している .NET 4.X 上にあるため、これについてはすべて明確にする必要があると思います。
ここで何か簡単なことを見逃していますか?