【发布时间】:2015-07-20 08:01:00
【问题描述】:
我正在使用具有自定义 URL 的服务器:http://example.com/site/,如您所见,我需要更改我的应用程序的默认根路径 ("/") 以防止 404 错误。使用带有出站规则的 IIS 重写模块似乎有效,所有 html 链接和引用都被正确转换以查询内部网站。问题是在我的控制器中使用Redirect() 或RedirectToAction() 方法时,网站的内部名称会被删除,因此会导致404。这是我的 IIS 出站规则:
<rewrite>
<outboundRules>
<rule name="Add path prefix to urls" stopProcessing="true">
<match filterByTags="A, Form, Img, Link, Script" pattern="^/(.*)" />
<action type="Rewrite" value="/site{R:0}" />
</rule>
</outboundRules>
</rewrite>
所以澄清一下:当帐户/登录发生重定向时,我有 http://example.com/site/,它变为 http://example.com/account/login 而不是 http://example.com/site/account/login 。我想必须修改 RouteConfig,但我不知道如何,或者我是否可以在 IIS 中做到这一点。我的 RouteConfig 类中有以下内容:
routes.MapRoute(
name: "SiteRoot",
url: "site/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
谢谢。
【问题讨论】:
-
为什么不在您的网站目录 (www.example.com) 下创建一个名为 site 的虚拟目录并将代码复制到那里。它会按照你想要的方式工作。?
-
@pjobs 我不能,服务器根目录是example.com/site/,如果我创建一个虚拟目录,那么我会有example.com/site/site/
-
你得到答案了吗?将我的 mvc react 应用程序部署到 IIS 服务器时,我也遇到了同样的问题,IIS 将为应用程序分配一个虚拟路径。
标签: asp.net asp.net-mvc iis url-rewriting iis-8.5