Url rewriting 当URL中间存在一个点时,重写器错误地工作。
我有一个asp net core 2.0的项目 我已经在web.config中建立了下一条规则:Url rewriting 当URL中间存在一个点时,重写器错误地工作。,url-rewriting,asp.net-core-2.0,Url Rewriting,Asp.net Core 2.0,我有一个asp net core 2.0的项目 我已经在web.config中建立了下一条规则: <rewrite> <rules> <rule name="wwwroot" > <match url="([\S]+[.](js|css|png|gif|jpg|jpeg))" /> <action type="Rewrite" url="wwwroot/{R:1}" lo
<rewrite>
<rules>
<rule name="wwwroot" >
<match url="([\S]+[.](js|css|png|gif|jpg|jpeg))" />
<action type="Rewrite" url="wwwroot/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
当我访问url:www.foobar.com/lib/chart.js/dist/chart.js时,由于某种原因,iis会尝试在路径中查找chart.js:wwwroot/lib/chart.js忽略url的最后一部分(/dist/chart.js),当我希望使用wwroot/lib/chart.js/dist/chart.js时,尝试这样修改您的regexp:
([\S]+[.](js | css | png | jpg | jpeg))$< /代码>如果在URL/P>结束时应考虑文件扩展名
编辑
根据您的规则,您应该排除从wwwroot
<rule name="wwwroot" >
<match url="([\S]+[.](js|css|png|gif|jpg|jpeg))" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" negate="true" pattern="^/wwwroot" ignoreCase="true" />
</conditions>
<action type="Redirect" url="wwwroot/{R:1}" logRewrittenUrl="true" />
</rule>
我已经做过了,但什么也没做。我认为regexp匹配得很好,但是只重写了第一部分尝试将Rewrite
更改为Redirect
,然后您将能够看到实际的行为。只是为了调试。哇!我得到了wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroot/wwroo正确路径:wwwroot/lib/chart.js/dist/chart.js,但我仍然收到404错误。文件就在那里,如果我将文件夹名更改为chartjs(去掉点),它可以工作,但是有了点,我得到404