【问题标题】:Asp.net MVC Domain Routing or Setting domain on optional MVC URLAsp.net MVC 域路由或在可选 MVC URL 上设置域
【发布时间】:2012-12-11 11:12:39
【问题描述】:
如何在一个 Asp.net MVC 项目中的可选 URL 上设置付费域,如下所示:
-
http://domain.com/Controller/Action?id -----> www.example.com
-
domain.com/Controller/Action?id2 -----> www.sample.net
换句话说,我们希望将每个 URL 映射到 1 个 MVC 项目中的单独域名。
有必要说,之前在Stackoverflow 中提出过类似的问题,但有一些变化。我之前也在official asp.net site 中问过。为了澄清问题,我复制了问题以获得很好的答案。之前Mr. k.Scott Allen也问过这个问题,所以他建议我阅读MVC中的IRouteConstrain主题。
无论如何,在 Global.asax 文件的 Mapping routes 中所需的配置对我来说并不好。
到目前为止我收集到的信息是:
首先,考虑到我们已经配置了所需的 DNS 选项来处理连接到相关权威 DNS 服务器的请求。
现在,我们需要通过配置 MapRoutes 对 Global.asax 文件进行一些更改。
请通过实施上述示例来回答这个问题。非常感谢。
【问题讨论】:
标签:
asp.net-mvc
dns
asp.net-mvc-routing
【解决方案1】:
一种简单的外部方法是使用如下所示的 dns 重定向:
- www.example.com ----重定向到----> www.domain.com/Controller/Action/id
可以在权威(本地)dns 服务器上执行。请注意,我们必须在 url 中使用可能的字符来存储在 dns RR 中。这可以通过更改标识符或在 IIS 中使用 Url Rewrite 方法来解决。
由于为 SEO 优化 Url 和缩短主题(如子域),Url Rewrite 允许我们进行一些映射。但是,由于实际上没有使用子域,我们不能在 dns 中使用 Url 别名,如下所示:
- www.domain.com/Controller/Action?id=optional ----映射到 --> www.domain.com/optional
- www.domain.com/optional 不等于 optional.domain.com
所以我们不能使用这个别名:
- www.domain.com/optional ---域别名 ---> www.example.com
最后,在 global.asax 或 C# 或 VB 文件中可用的映射技术,如 Route、IRoute 等...可用于内部映射和设置 MVC 路由引擎以表示不同的 Url 信息,但不能为 a域。