繁体   English   中英

简单的IIS重写

[英]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( localhostcomputername.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM