iis 重定向URL中的第二个尾随斜杠

0s7z1bwu  于 2023-04-21  发布在  其他
关注(0)|答案(3)|浏览(158)

我正在使用URL重写来强制HTTP到https重定向。它正在工作,除了它在URL后面添加了第二个斜杠。例如,如果我转到http://example.com,重写的URL最终将成为https://example.com//。我不想要甚至1个斜杠,更不用说2了,我不能摆脱它。我尝试了this解决方案,但它不起作用。可能是因为这个人想摆脱尾随斜杠,我有2个,所以它不匹配?
我在我的web.config文件中有以下规则。我正在运行Windows Server 2019与IIS 10和URL重写模块。如果有人能告诉我哪里出错了,我将不胜感激!

<rule name="HTTPS Redirect" stopProcessing="true">
    <match url="(.*)" />
        <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{REQUEST_URI}" appendQueryString="false" />
</rule>
<rule name="SEO - Remove trailing slash" stopProcessing="false">
    <match url="(.+)/$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_METHOD}" pattern="GET" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        </conditions>
    <action type="Rewrite" url="_{R:1}" />
</rule>
50pmv0ei

50pmv0ei1#

只需删除重定向URL操作中{HTTP_HOST}和{REQUEST_URI}之间的斜杠。(https://serverfault.com/questions/893315/best-way-to-redirect-all-http-to-https-in-iis

a8jjtwal

a8jjtwal2#

您可以尝试使用此URL重写规则:

<rule name="HTTPS Redirect" stopProcessing="true">
    <match url="^(.*)$" />
        <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
        </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
<rule name="SEO - Remove trailing slash" stopProcessing="false">
    <match url="(.+)/$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_METHOD}" pattern="GET" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        </conditions>
    <action type="Rewrite" url="_{R:1}" />
</rule>
dsekswqp

dsekswqp3#

我已经经历了这个问题,我注意到在这个问题中给出的其他一个答案是不工作,所以我解决了这个问题,并希望分享什么是为我工作。请找到下面的重写规则,正在努力从URL中删除双斜杠。我们需要把它放在web.config中。

<rewrite>
  <rules>
    <rule name="RemoveDoubleSlash" patternSyntax="ECMAScript" stopProcessing="true">
        <match url="(.*)" />
        <action type="Redirect" url="{C:1}/{C:2}" />
        <conditions>
            <add input="{UNENCODED_URL}" pattern="(.*)//(.*)" />
        </conditions>
    </rule>
  </rules>
</rewrite>

相关问题