简单的IIS重写

问题描述:

这已被问了几次,但它似乎并没有为我工作。我想重定向像http://11.11.11.11:8008/foo/bar?baz=1这样的网址为https://11.11.11.11:1443/foo/bar?baz=1。只需添加S并更改端口。简单的IIS重写

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

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

所以这是我的两个误解。首先,来自我公司外部的外部流量使用公司特定的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> 

这个怎么样?

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