【发布时间】:2017-01-16 22:10:27
【问题描述】:
我有以下网址:
https://blog.test.com/search.aspx
和:
https://blog.test.com/post/2017/01/BlogPostNumberOne.aspx
我想做的事:
将包含单词post 并在末尾有aspx 的URL 重写为没有扩展名的干净URL。比如:
https://blog.test.com/search.aspx-> 没有模式匹配,什么都不做
https://blog.test.com/post/2017/01/BlogPostNumberOne.aspx-> MATCH,重写为
https://blog.test.com/post/2017/01/BlogPostNumberOne
我尝试了以下正则表达式:^(?=.*/post/)(?=.*aspx$),我的 web.config 看起来像这样:
<rule name="Redirect to clean URL" stopProcessing="true">
<match url="^(?=.*/post/)(?=.*aspx$)" ignoreCase="true"/>
<action type="Redirect" url="{R:1}"/>
</rule>
它根本不工作,有时它会返回 500。你知道如何正确地重写我的传入请求吗?
谢谢:)
【问题讨论】:
-
它不起作用,因为您仅使用零宽度断言而没有在
{R:1}替换中引用的捕获组。将正则表达式更改为url="^(.*/post/.*)\.aspx$"
标签: asp.net regex url-rewriting