求助:IIS .NET MVC中URL Rewrite Module精确URL重定向报错
解决.NET MVC旧URL重定向问题
你配置的URL Rewrite规则存在两个核心问题,直接导致了“Controller App is not found”的错误:
错误点分析
<match url>字段无需包含完整域名和协议,它仅匹配域名之后的路径部分。你写入完整URL后规则根本不会触发,请求仍会按原路由解析,MVC自然会尝试寻找名为App的控制器。- 使用
Rewrite类型是服务器内部重写,浏览器地址栏不会更新,内部仍会按原路径处理,依旧触发错误。若需要用户看到新URL,应使用**重定向(Redirect)**类型。
修正后的配置
单个页面精确匹配
如果仅需重定向指定的/App/Home/Index路径,使用以下配置:
<rewrite> <rules> <rule name="Redirect App Home Index" stopProcessing="true"> <match url="^App/Home/Index$" /> <action type="Redirect" url="/Home/Index" redirectType="Permanent" logRewrittenUrl="true" /> </rule> </rules> </rewrite>
通用匹配(所有/App/开头的路径)
如果要将所有/App/xxx格式的路径都重定向到/xxx,可以用正则实现动态替换:
<rewrite> <rules> <rule name="Redirect All App Paths" stopProcessing="true"> <match url="^App/(.*)$" /> <action type="Redirect" url="/{R:1}" redirectType="Permanent" logRewrittenUrl="true" /> </rule> </rules> </rewrite>
关键说明
redirectType="Permanent"对应301永久重定向,对SEO友好;若为临时重定向需求,改用Temporary。^和$是正则边界符,确保精确匹配完整路径,避免部分匹配引发异常。{R:1}是正则捕获组,对应<match>中(.*)匹配到的内容,实现路径的动态替换。
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

