我正在使用带有自定义URL的服务器:http://example.com/site/,正如您所见,我需要将我的应用程序的默认根路径(“/”)更改为防止404错误。使用带有出站规则的IIS重写模块似乎可行,将所有html链接和引用正确转换为查询内部网站。问题是当在我的控制器中使用Redirect()
或RedirectToAction()
方法时,网站的内部名称被删除,从而导致404错误。这是我的IIS出站规则:更改ASP.NET MVC或IIS中的URL根路径
<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
@pjobs我不能,服务器的根目录是example.com/site/,如果我创建一个虚拟目录,那么我会有example.com/site/site/ – Adrianne