IIS URL重写不重写用户友好的URL

iezvtpos  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个简单的重写规则,使用IIS向导应该重写:
https://example.com/products/detail/ABC-123

https://example/com/products/detail. php?sku=ABC-123
规则是:

<rule name="RewriteUserFriendlyURL2" stopProcessing="true">
  <match url=".*/products/detail/([^/]+)/?$" />
  <conditions>
  </conditions>
  <action type="Rewrite" url="https://example.com/products/detail.php?sku={R:1}" />
</rule>

当我在IIS编辑规则->测试模式对话框中测试友好URL时,
R:0是https://example.com/products/detail/ABC-123
R:1是ABC-123。
然而,当我在浏览器中输入友好的URL时,我只是得到一个404错误。不幸的是,我不能看到它实际输出的重写网址,有没有办法找出结果?

unftdfkk

unftdfkk1#

请尝试以下重写规则:

<rewrite>
    <rules>
        <rule name="RewriteUserFriendlyURL2">
            <match url="^products/detail/([_0-9a-z-]+)" />
            <action type="Rewrite" url="products/detail.php?sku={R:1}" />
        </rule>
    </rules>
</rewrite>

我做了以下测试,结果很成功。
首先,我在本地创建了一个简单的测试ASP.NET页面,并将其命名为detail. aspx。我可以通过访问http://localhost/products/detail. aspx正确浏览页面?sku=ABC-123。

然后我创建了一个简单的重写规则,将使用以下格式重写URL:
http://localhost/products/detail/ABC-123
收件人:
http://localhost/products/detail. aspx?sku=ABC-123。

最后,我测试了这个规则是否正确地重写了URL。我打开网页浏览器,请求以下URL:
http://localhost/products/detail/ABC-123
您可以看到,Web服务器上的重写规则已将原始URL更改为detail.aspx,并将“ABC-123”作为查询字符串参数的值传递。

相关问题