gpt4 book ai didi

iis - 静态网页的url重写规则-使用带附加参数的url后返回404

转载 作者:行者123 更新时间:2023-12-04 19:20:32 31 4
gpt4 key购买 nike

我使用 IIS7 的 URL 重写模块 - 因为很少有静态文件的 URL 重写。

基本上我将/pretty-url 映射到/real-file-name.html

到目前为止很简单。

但是在将查询字符串添加到漂亮的 url 后,它会抛出 404 状态代码。到目前为止,我还没有找到解决此问题的任何选项。有什么建议,还是我做错了什么?

配置如下:

<rewriteMaps>
<rewriteMap name="CoolUrls">
<add key="/pretty-url" value="/real-file.html" />
... and so on ...
</rewriteMap>
</rewriteMaps>

和:

<rules>
<clear />
<rule name="Rewrite rule for CoolUrls" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CoolUrls:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="true" />
</rule>
</rules>

任何带查询的请求(? 标记后的任何参数)都以 404 状态码结束。

最佳答案

我假设您希望能够添加一个查询字符串,并且该查询字符串必须附加到重写的请求中。您可能不希望查询字符串包含在重写映射的匹配中。因为这实际上是您使用 {CoolUrls:{REQUEST_URI}} 所做的,因为 {REQUEST_URI} 还包含查询字符串。您应该将其替换为 {CoolUrls:{R:0}}

完整规则:

<rule name="Rewrite rule for CoolUrls" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CoolUrls:{R:0}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="true" />
</rule>

更新:您应该更新重写映射,因为 {R:0}(URL)不包括 URL 中的前导斜杠。所以你的重写图应该是:

<rewriteMaps>
<rewriteMap name="CoolUrls">
<add key="pretty-url" value="/real-file.html" />
<add key="another/pretty-url" value="/another/real-file.html" />
... and so on ...
</rewriteMap>
</rewriteMaps>

关于iis - 静态网页的url重写规则-使用带附加参数的url后返回404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515148/

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