我用如下规则 把 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 这样子吗?跪谢
试试下面的规则配置
<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>
是覆盖我以前的还是新增这条啊dudu大?应该是覆盖我以前的吧?
@LoveCoder: 已修改,现在可以覆盖
dudu大,不行。是没写对还是配置错了啊。我是直接覆盖了我原来的
提示
该网页无法正常运作
m.xxxx.com 将您重定向的次数过多。
@dudu: 还是不行 ,提示
500 - 内部服务器错误。
@LoveCoder: 用修改后的,之前少了<add input="{HTTPS}" pattern="^OFF$" />
@dudu: 我是用了修改后的,提示 500 - 内部服务器错误。
修改前的我覆盖完了是
该网页无法正常运作
m.xxxx.com 将您重定向的次数过多。
修改后的是 500 - 内部服务器错误。
@LoveCoder: 我这里是可以的,请求 http://m.xxx.com/123123 时会跳转到 https://m.xxx.com/123123 ,如果你的应用需要通过 /product.aspx?id=123123
才能访问,需要去掉 stopProcessing="true"
,通过另外的重写规则继续处理
@dudu:好像可以了。难道是我第一遍复制的时候少复制了字母什么的。我再试试。感谢dudu大。
@dudu: 还是不行。
首页正确跳转,加了 mapp 不会跳转了。这个满足需求。
但是访问 http://m.xxxx.com/123456 的时候本来应该跳转到 https://m.xxxx.com/123456的,却跳转成了 https://m.xxxx.comhttps/?bookId=123456&bookId=123456 这是为何啊?
@LoveCoder: 加上 stopProcessing="true"
就不会出现这个问题
@dudu: 已经加了啊。直接复制你上面给我的那个。
@LoveCoder: 已修改配置,改为跳转为 https://{HTTP_HOST}/{R:1}
@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: 重写规则是怎么写的?重写规则是放在 redirec to https
规则前面的吗?
@dudu: 对,我重写规则是放在这一堆规则前面。所以我该把这些规则放到最开头吗
@dudu:
我把你刚给我写的那个规则,挪到开第一条规则前面去了,没错了,现在正确跳转到 https://m.xxxx.com/4888 了。非常感谢。
@LoveCoder: redirec to https
规则中去掉 stopProcessing="true"
,重写规则放到 redirec to https
规则之后
@dudu: 这样子写的作用是?
我刚去测试,发现拿 https://m.xxx.com/product/?id=4888 和 http://m.xxx.com/product/?id=4888 都能访问。 是不是我还遗漏了什么情况没测试到?
我现在没去掉这个 stopProcessing="true" ,但是重写规则是放到了 redirec to https 这个后面了。
这样子会造成什么问题吗?我怕我遗漏了什么链接没测试到造成无法访问。
@LoveCoder: stopProcessing="true"
表示如果匹配这条规则,就不继续用后面的规则进行匹配
@dudu: 那就奇怪了。那按道理来说,哪个链接可能不能被访问呢?
好像还没找到哪个链接有异常。能大概猜测一下哪个链接不能访问了吗?
我先按你说的把 stopProcessing="true" 给去掉。
@dudu: 还有一个页面也要不进行https跳转。按你之前给的规则我搞了搞没搞成。。。。。尴尬。。。
https://m.xxxx.com/mapp/mShop/?shpId=123456
无论数字多少,只要是 http://m.xxxx.com/mapp/mShop/ 这样子的,都不跳转https。再帮忙整一下。谢谢dudu大。
@dudu: 搞成了。。去掉那个 $ 好像就可以了 。
@LoveCoder: ^/mapp/?$
只匹配 /mapp
与 /mapp/
@dudu: 嗯嗯。可以了。刚试出来了。谢谢。非常感谢dudu大。