首页 新闻 搜索 专区 学院

有人用过IISREWRITE 这个组件么?微软 IIS 自己出的那个。

0
[已解决问题] 解决于 2018-08-03 15:53

我用如下规则 把 http 跳转了 https ,但是我又想 http://m.xxx.com/mapp/ 这个页面单独不跳转https,该怎么写?

还有,我发现用这个规则跳转好像有一点不好的地方,比如我访问 http://m.xxx.com/123123 它跳转的不是 https://m.xxx.com/123123 而是我真实的地址  https://m.xxx.com/product.aspx?id=123123 ,这种能想办法搞成 https://m.xxx.com/123123 这样子吗?跪谢

LoveCoder的主页 LoveCoder | 初学一级 | 园豆:14
提问于:2018-08-03 10:55
< >
分享
最佳答案
1

试试下面的规则配置

<rewrite>
    <rules>
        <rule name="redirect-to-https" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{REQUEST_URI}" pattern="^/mapp/?$" negate="true" />
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
    </rules>
</rewrite>
奖励园豆:5
dudu | 高人七级 |园豆:36403 | 2018-08-03 11:18

是覆盖我以前的还是新增这条啊dudu大?应该是覆盖我以前的吧?

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 11:20

@LoveCoder: 已修改,现在可以覆盖

dudu | 园豆:36403 (高人七级) | 2018-08-03 11:27

dudu大,不行。是没写对还是配置错了啊。我是直接覆盖了我原来的

提示 

该网页无法正常运作

m.xxxx.com 将您重定向的次数过多。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 11:27

@dudu: 还是不行 ,提示 

500 - 内部服务器错误。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 11:28

@LoveCoder: 用修改后的,之前少了<add input="{HTTPS}" pattern="^OFF$" />

dudu | 园豆:36403 (高人七级) | 2018-08-03 11:29

@dudu: 我是用了修改后的,提示 500 - 内部服务器错误。

修改前的我覆盖完了是 

该网页无法正常运作

m.xxxx.com 将您重定向的次数过多。

修改后的是 500 - 内部服务器错误。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 11:29

@LoveCoder: 我这里是可以的,请求 http://m.xxx.com/123123 时会跳转到 https://m.xxx.com/123123 ,如果你的应用需要通过 /product.aspx?id=123123 才能访问,需要去掉 stopProcessing="true" ,通过另外的重写规则继续处理

dudu | 园豆:36403 (高人七级) | 2018-08-03 11:34

@dudu:好像可以了。难道是我第一遍复制的时候少复制了字母什么的。我再试试。感谢dudu大。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 13:04

@dudu: 还是不行。

首页正确跳转,加了 mapp 不会跳转了。这个满足需求。

但是访问 http://m.xxxx.com/123456 的时候本来应该跳转到 https://m.xxxx.com/123456的,却跳转成了 https://m.xxxx.comhttps/?bookId=123456&bookId=123456 这是为何啊?

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 13:40

@LoveCoder: 加上 stopProcessing="true" 就不会出现这个问题

dudu | 园豆:36403 (高人七级) | 2018-08-03 14:10

@dudu: 已经加了啊。直接复制你上面给我的那个。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 14:11

@LoveCoder: 已修改配置,改为跳转为 https://{HTTP_HOST}/{R:1}

dudu | 园豆:36403 (高人七级) | 2018-08-03 14:16

@dudu: 对,改为这样子能用。

我现在是像下面这样写的。大部分都满足了。链接是 http://m.xxxx.com/mapp/的时候没跳转https了。首页也正常跳转了。

但是,假设我访问 http://m.xxxx.com/4888 的时候,它跳转的是  https://m.xxxx.com/product.aspx?id=4888 

我本来是用了重写组件把 http://m.xxxx.com/product.aspx?id=4888重写成了 http://m.xxxx.com/4888 的,所以,它跳转https的时候,跳回了我真实地址。如果能跳转成我重写后的地址最好了。我希望跳转的是 https://m.xxxx.com/4888 。我表述明白吗dudu大?

 

<rule name="redirec to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/mapp/?$" negate="true" />
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Temporary" />
</rule>

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 14:19

@LoveCoder: 重写规则是怎么写的?重写规则是放在 redirec to https 规则前面的吗?

dudu | 园豆:36403 (高人七级) | 2018-08-03 14:21

@dudu: 对,我重写规则是放在这一堆规则前面。所以我该把这些规则放到最开头吗

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 14:27

@dudu: 

我把你刚给我写的那个规则,挪到开第一条规则前面去了,没错了,现在正确跳转到 https://m.xxxx.com/4888 了。非常感谢。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 14:29

@LoveCoder: redirec to https 规则中去掉 stopProcessing="true" ,重写规则放到 redirec to https 规则之后

dudu | 园豆:36403 (高人七级) | 2018-08-03 14:35

@dudu: 这样子写的作用是?

我刚去测试,发现拿 https://m.xxx.com/product/?id=4888 和 http://m.xxx.com/product/?id=4888 都能访问。 是不是我还遗漏了什么情况没测试到?

我现在没去掉这个 stopProcessing="true" ,但是重写规则是放到了 redirec to https 这个后面了。

这样子会造成什么问题吗?我怕我遗漏了什么链接没测试到造成无法访问。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 14:44

@LoveCoder: stopProcessing="true" 表示如果匹配这条规则,就不继续用后面的规则进行匹配

dudu | 园豆:36403 (高人七级) | 2018-08-03 14:55

@dudu: 那就奇怪了。那按道理来说,哪个链接可能不能被访问呢?

好像还没找到哪个链接有异常。能大概猜测一下哪个链接不能访问了吗?

我先按你说的把 stopProcessing="true" 给去掉。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 15:16

@dudu: 还有一个页面也要不进行https跳转。按你之前给的规则我搞了搞没搞成。。。。。尴尬。。。

https://m.xxxx.com/mapp/mShop/?shpId=123456

无论数字多少,只要是 http://m.xxxx.com/mapp/mShop/ 这样子的,都不跳转https。再帮忙整一下。谢谢dudu大。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 15:29

@dudu: 搞成了。。去掉那个 $ 好像就可以了 。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 15:34

@LoveCoder: ^/mapp/?$ 只匹配 /mapp/mapp/

dudu | 园豆:36403 (高人七级) | 2018-08-03 15:52

@dudu: 嗯嗯。可以了。刚试出来了。谢谢。非常感谢dudu大。

LoveCoder | 园豆:14 (初学一级) | 2018-08-03 15:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册