IIS 重定向 url 条带异常
IIS redirect with url exception for stripe
我正在更新一个网站的条带结帐,我在本地主机上成功地完成了它,但是当我在 windows 服务器上将它置于实时模式时它停止工作了。问题是,当我应该从 stripe 重定向到结帐页面时,url 被更改并变成了没有意义的东西:
正确的url:www.checkout.stripe.com/pay/cs_..。
我被重定向到的 url:www.mysite.com/pay/cs_..
我一直在想这可能是什么原因,我认为这是我在 windows 服务器上的 URL 重写规则。我想为规则添加一个例外并允许启动条带结帐,但我不知道该怎么做。
下面是我的 web.config 文件:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8008/{R:1}" />
</rule>
<rule name="HTTPS" enabled="false" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
您显示的文件仅包含 入站 重写规则。但是您的服务器响应有问题。因此,您应该在正确的配置文件中修复 outbound 重写规则。
我明白了。这是我最后的 web.config
<configuration>
<system.webServer>
<urlCompression doDynamicCompression="false" />
<rewrite>
<rules>
<clear />
<rule name="ReverseProxyInboundRule">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8008/{R:1}" />
</rule>
<rule name="stripe redirect in checkout" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_URI}" pattern="/pay/" />
</conditions>
<action type="Redirect" url="checkout.stripe.com{REQUEST_URI}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
我的问题不是真正理解 URL 重写中选项的含义。我查看了课程 URL Rewrite for Developers,它真的很有帮助。我能够快速解决问题。
我正在更新一个网站的条带结帐,我在本地主机上成功地完成了它,但是当我在 windows 服务器上将它置于实时模式时它停止工作了。问题是,当我应该从 stripe 重定向到结帐页面时,url 被更改并变成了没有意义的东西:
正确的url:www.checkout.stripe.com/pay/cs_..。 我被重定向到的 url:www.mysite.com/pay/cs_..
我一直在想这可能是什么原因,我认为这是我在 windows 服务器上的 URL 重写规则。我想为规则添加一个例外并允许启动条带结帐,但我不知道该怎么做。
下面是我的 web.config 文件:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8008/{R:1}" />
</rule>
<rule name="HTTPS" enabled="false" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
您显示的文件仅包含 入站 重写规则。但是您的服务器响应有问题。因此,您应该在正确的配置文件中修复 outbound 重写规则。
我明白了。这是我最后的 web.config
<configuration>
<system.webServer>
<urlCompression doDynamicCompression="false" />
<rewrite>
<rules>
<clear />
<rule name="ReverseProxyInboundRule">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://localhost:8008/{R:1}" />
</rule>
<rule name="stripe redirect in checkout" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_URI}" pattern="/pay/" />
</conditions>
<action type="Redirect" url="checkout.stripe.com{REQUEST_URI}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>
我的问题不是真正理解 URL 重写中选项的含义。我查看了课程 URL Rewrite for Developers,它真的很有帮助。我能够快速解决问题。