【问题标题】:Simple IIS rewrite简单的 IIS 重写
【发布时间】:2015-01-20 02:17:35
【问题描述】:

这已被问过几次,但它似乎对我不起作用。我想将http://11.11.11.11:8008/foo/bar?baz=1 之类的网址重定向为https://11.11.11.11:1443/foo/bar?baz=1。只需添加 S 并更改端口即可。

如果用户输入computername.domain.local 或我使用localhost 浏览,则不会发生任何事情。它应该只重定向到特定的 IP 地址/端口,并且只能在通过 http 访问时进行。

原因是我的机器内部使用 443 进行 SSL(localhostcomputername.domain.local)。但是对于来自我办公楼之外的请求,我们有一个路由器重定向。因此,他们使用端口访问公共 IP 地址,并且 SSL 不再位于 443 上。因此,要在平板电脑和其他位置测试代码,我需要通过端口浏览到 IP 地址。

【问题讨论】:

    标签: regex .htaccess redirect iis ssl


    【解决方案1】:

    这个怎么样?

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^11\.11\.11\.11$
    RewriteCond %{SERVER_PORT} 8008
    RewriteRule ^(.*)$ https://11.11.11.11:1443/$1 [R]
    

    【讨论】:

      【解决方案2】:

      所以这是我的两个误解。首先,来自我公司外部的外部流量使用公司特定的 IP 地址和端口 8008。这会将它们路由到托管我网站的实际计算机。但是,当流量通过时,它被定向到我机器上的端口 80,而不是 8008。其次,重写中的 URL 表达式仅包含路径和查询字符串。您无法像我尝试的那样匹配其中的完整 URL。

      解决方案是在匹配中添加一个通配符,并使用条件来匹配其他需要的内容。

      <rule name="SSL on 1443" stopProcessing="true">
          <match url="(.*)" />
          <action type="Redirect" url="https://11.11.11.11:1443/{R:0}" redirectType="Found" />
          <conditions>
              <add input="{HTTPS}" pattern="OFF" />
              <add input="{HTTP_HOST}" pattern="11\.11\.11\.11" />
          </conditions>
      </rule>
      

      【讨论】:

        猜你喜欢
        • 2011-12-12
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        • 2014-01-30
        • 2011-12-19
        • 2013-08-14
        • 2017-12-15
        相关资源
        最近更新 更多