IIS URL重写: 403 - 禁止访问:拒绝访问

14

我安装了 IIS URL Rewrite 2.0 并添加了一个规则将所有的http链接重定向到https。下面是我的 Web.Config 代码:

 <rewrite>
        <rules>
            <rule name="REdirect To HTTPS" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
            </rule>
        </rules>
    </rewrite>

一切看起来都很好。但是当我使用http访问我的网站时,它会抛出403错误。

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

在 IIS 7.5 中启用了 TLS 1.0。

我在哪里可以获取关于403错误的更多信息?


禁用重写规则后,网站是否正常工作? - David Ford
是的,我已经为它配置了443端口,并且它正常工作。 - Abdul
尝试使用 redirectType = "Found""Permanent" - techspider
你也可以尝试这个:http://stackoverflow.com/questions/10428357/iis-7-5-url-redirect-for-specific-patterns - techspider
@techspider:使用“Found”和“Permanent”都有相同的问题。 - Abdul
显示剩余2条评论
3个回答

34

在IIS中启用了SSL。我刚刚在某个地方读到,使用URL Rewrite 2.0时,需要取消SSL设置中的要求SSL选项。

我取消了要求SSL并点击应用。现在工作正常。


3
这对我来说就是这样了。我无法相信我浪费了这么多时间在这上面。我以为它很复杂,从未想过它是如此简单的东西。谢谢阿卜杜勒! - AbeyMarquez
“somewhere”链接损坏了,但是有一个有趣的修复Force SSL的方法。 - JoshYates1980
我建议按照以下步骤操作:https://blogs.technet.microsoft.com/dawiese/2016/06/07/redirect-from-http-to-https-using-the-iis-url-rewrite-module/ - JoshYates1980
它真的帮助了我。 - SalmanShariati
我是通过选择我要重写的网站,选择“SSL设置”,然后取消选中“要求SSL”复选框来完成这个操作的。在之前的尝试中,我曾经勾选过它并强制使用SSL。 - hanzolo

9
我遇到了同样的错误,以下是我的解决方案,希望能对其他人有所帮助。
我规则重写了进入默认网站根应用程序("/")的URL,将其重定向到"/public",但是我遇到了403错误。如果直接请求"/public"应用程序,则正常工作,如果禁用重写规则也可以正常工作,因此权限不是问题。
如前面的答案所述,未选中“需要SSL”。
通过查看IIS日志文件,我发现特定类型的错误是403.18 - "无法在当前应用程序池中执行请求的URL"。
Web站点的根应用程序需要分配与发送请求的应用程序相同的应用程序池。

0

不确定这是否有帮助,但我看到您的规则未启用

<rule name="Redirect to https" enabled="false" stopProcessing="true">

1
规则已在@Codeone启用。问题出在SSL设置上。 - Abdul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接