gpt4 book ai didi

c# - IIS web.config 在开发环境中重定向//www和HTTPS

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:19 26 4
gpt4 key购买 nike

我有一个 .NET MVC 5 网站,我目前在我的生产环境中使用网络配置(使用有效证书)强制使用 https 并将 www 更改为非 www。这很好用。我也有两个开发环境。这些环境设置了自签名证书,我也想在这些环境中强制使用 https 并将 www 更改为非 www。

<rewrite>
<rules>
<rule name="Redirect any HTTP request to HTTPS with no www" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*"></match>
<conditions >
<add input="{HTTP_HOST}" pattern="^(.*)?website.com$"></add>
<add input="{HTTPS}" pattern="off"></add>
</conditions>
<action type="Redirect" url="https://website.com/{R:0}" redirectType="Permanent" appendQueryString="true"></action>
</rule>
<rule name="Redirect https www to HTTPS with no www" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*"></match>
<conditions >
<add input="{HTTP_HOST}" pattern="^www.website.com$"></add>
<add input="{HTTPS}" pattern="on"></add>
</conditions>
<action type="Redirect" url="https://website.com/{R:0}" redirectType="Permanent" appendQueryString="true"></action>
</rule>
</rules>
</rewrite>

但是,我当前的实现会检查“HTTPS”= 关闭/打开,这在我的开发环境中始终处于“关闭”状态,因为它们没有有效的证书。这会导致无限重定向循环(Chrome 中出现 TOO_MANY_REDIRECTS 错误)。我已经尝试了所有我能找到的宏来检查({URL}、{REQUEST_URL}、{HTTP_HOST} 等...),但这些都不是完全限定的 URL(即:“http://website.dev/whatever”) .如果我有这个,我可以检查是否有人尝试开始使用 https 或 http。

这没什么大不了的,但我已经花了太多时间在这上面了,哈哈!任何想法表示赞赏!

最佳答案

{CACHE_URL} 变量包含完整的 url。您可以使用该变量而不是 {HTTPS} 来构建条件。它应该看起来像这样:

相反:

<add input="{HTTPS}" pattern="off"></add>

使用:

<add input="{CACHE_URL}" pattern="^http://" />

而是:

<add input="{HTTPS}" pattern="on"></add>

使用:

<add input="{CACHE_URL}" pattern="^https://"  />

关于c# - IIS web.config 在开发环境中重定向//www和HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45471342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com