URL 重写至一个网站,而不重写至另一个网站

URL 重写至一个网站,而不重写至另一个网站

我们有自己的域名,还有多个子域名。其中一个网站需要访问仅有的通过 SSL,但人们可以输入 http 并仍能到达那里。URL-Rewrite 会强制将 http 转换为 https。

所以我的两个子域名是: sub1.domain.orgsub2.domain.org

因此,如果我输入

http://sub1.domain.org/page_on_domain1

它被重写为

https://sub1.domain.org/page_on_domain1

-这是正确的。但是如果我这样做(这是不可能的 -page_on_domain1不存在sub2.domain.org

https://sub2.domain.org/page_on_domain1

我的 url-rewrite 规则似乎工作正常,但我希望最后一个地址给我一个错误页面,因为该页面在该子域上不存在。

我正在 Windows 7 x64 Pro 上的 Firefox 中测试这一点。

我的 url-rewrite 规则如下(我通过 IIS7 GUI 执行此操作):

Requested URL:  Matches the Pattern:  (*)  Using Regular Expressions (ignore case)
Conditions:  Match All:  Input:  {HTTPS}  Matches the Pattern:  ^Off$
Redirect URL:  https://sub1.domain.org/{REQUEST_URI}

现在,我尝试将请求的 URL 模式更改为:.*sub1.domain.org/.*但 IIS7 中的正则表达式测试器说它不匹配https://sub1.domain.org - 我不明白这一点。

我怎样才能保留 sub1.domain.org 的 http 到 https 的重写,但对 sub2.domain.org 完全不产生任何影响?

答案1

在我想要通过 访问https并重写http为 的特定站点的 web.config 中http,我进行了如下设置:

<rewrite>
  <rules>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

相关内容