假设映射到我的根主机目录的域是example.com
。 GoDaddy强制将其他域映射到根目录的子目录。例如,我的第二个域example1.com
已映射到example.com/example1
。
我将我的ASP.NET MVC站点上传到这样一个子目录,但却发现用于导航的ActionLinks具有以下格式:
http://example1.com/example1/Controller/Action
换句话说,即使我使用映射到子目录的域,该子目录仍然在URL中使用。我想更改ActionLinks的格式。
但是,我注意到我也可以通过访问:
来访问相同的路径http://example1.com/Controller/Action
(省略子目录)
我想让我的ActionLinks自动删除子目录,因为它不是必需的。
这可以在不将ActionLinks更改为普通旧URL的情况下实现吗?
答案 0 :(得分:1)
不,我不这么认为,因为动作链接主要用于渲染控制器/动作。如果你有服务器的安装访问权限,另一个解决方法是使用像iirf.codeplex.com这样的URL重写工具,它是免费的,效果很好。但是,重写可能会产生一些其他意想不到的后果,具体取决于您正在做什么。
HTH。
答案 1 :(得分:1)
您可以尝试在子目录中按顺序在global.asax中添加其他路由语句。例如:
routes.AddRoute("example1/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.AddRoute("{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
我相信从全球的asax按顺序检查路线,因此您可以有效地将请求路由到正确的位置。但是,您的链接仍将包含URL中的“example1”文件夹。