限制从根网站访问 IIS 虚拟目录

限制从根网站访问 IIS 虚拟目录

我有两个域名 (domain1.com 和 domain2.com)。它们都使用同一个 Windows 托管服务器和 IIS7。

其中一个域被我的托管服务提供商(GoDaddy)称为“主域”,它始终指向我提供的根文件夹。

对于其他域,我在 IIS 中创建了一个虚拟目录并将其指向那里。

文件夹结构如下 -

root/
--Default.aspx
--SomeFile.aspx
--domain2folder/
----Default.aspx
----Domain2SomeFile.aspx

因此,如果我输入 domain1.com,我会看到常规的 Default.aspx。但是如果我输入 domain2.com,我会看到 domain2folder 的内容,就好像它是一个单独的 Web 应用程序一样 - 我认为这就是 IIS 虚拟目录的用途。很好。

但问题是,当我输入http://domain1.com/domain2folder,我看到了 domain2 的网站!

但是当我使用来自 domain1 的类似路径时,我不希望显示这些内容。只有当他们使用 domain2.com 时,用户才应该能够看到这些内容。我该怎么做?希望我说得有道理。

谢谢。

答案1

您可以使用 URL 重写来阻止基于主机标头的访问,或者根据需要重定向到正确的域: http://www.iis.net/download/URLRewrite

如果您的网站在 IIS 7 或更高版本中运行,并且您的托管商已安装它,那么您只需将一个包含以下内容的 web.config 放在您的 domain2folder 中,如果有人尝试使用错误的域访问它,它将重定向到正确的域:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HostNameRule">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^domain2\.com$" negate="true" />
          </conditions>
          <action type="Redirect" url="http://domain2.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

答案2

这样设置确实没有任何意义。

您通常只需将 domain2folder 设置为另一个网站的根目录。

相关内容