[英]Simple IIS rewrite
这个问题已经被问过几次了,但是对我来说似乎不起作用。 我想将http://11.11.11.11:8008/foo/bar?baz=1
这样的URL重定向为https://11.11.11.11:1443/foo/bar?baz=1
。 只需添加S并更改端口即可。
如果用户键入computername.domain.local
或使用localhost
浏览,则什么也不会发生。 它只能重定向到特定的IP地址/端口,并且只能通过http访问。
原因是我的机器内部将443用于SSL( localhost
或computername.domain.local
)。 但是对于来自我办公楼外部的请求,我们可以进行路由器重定向。 因此,他们使用端口访问公共IP地址,并且SSL不再位于443上。因此,要在平板电脑上以及从其他位置测试代码,我需要浏览到具有端口的IP地址。
这个怎么样?
RewriteEngine On
RewriteCond %{HTTP_HOST} ^11\.11\.11\.11$
RewriteCond %{SERVER_PORT} 8008
RewriteRule ^(.*)$ https://11.11.11.11:1443/$1 [R]
所以这是我的两个误解。 首先,来自公司外部的外部流量使用公司特定的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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.