Cra*_*ank 2 iis iis-7 url-rewriting url-parameters http-status-code-404
我使用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>
Run Code Online (Sandbox Code Playgroud)
和:
<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>
Run Code Online (Sandbox Code Playgroud)
任何带有查询的请求(?标记后的任何参数)都以404状态码结束。
我假设您希望能够添加查询字符串,并且该查询字符串必须附加到重写的请求中。您可能不希望查询字符串包含在rewritemap中的匹配项中。因为这实际上就是您要使用的内容,{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>
Run Code Online (Sandbox Code Playgroud)
更新:您应该更新重写映射,因为{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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |