假设我有一个现有的网站,例如:
www.stackoverflow.com
我现在想公开这个网站的移动版本:
m.stackoverflow.com
IIS 及其主机头名称解析,通常需要创建两个网站:
除了现在我在 IIS 中有两个网站。这意味着我必须在它们之间复制代码/文件。我不需要(也不想)在两个网站之间复制所有“模型”和“ Controller ”代码。我宁愿拥有一个公开移动版本的网站。
我可以拥有
default
页面在m.stackoverflow.com
只需执行重定向到“真实”网站上的移动登录页面:m.stackoverflow.com\default.asp
: <% Response.Redirect "www.stackoverflow.com/mobile" %>
然后客户端将结束(例如)
www.stackoverflow.com/mobile/default.aspx
.这不是我想要的。我希望它在浏览器中显示他们正在访问
m.stackoverflow.com
.因此,我可以在 IIS 中为一个 IIS 网站设置两个主机头名称:
并检查 http 请求
HOST
标题:GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: stackoverflow.com
诗句
GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: m.stackoverflow.com
除了现在我所有的网站页面必须先检查
Host
属性,然后根据它找到的内容更改渲染行为。这在经典的 ASP 中工作得很好:ViewQuestion.asp
<% Dim mobileVersion
...
If MobileVersion Then
%>
<html>
...
</html>
<% Else %>
<html>
...
</html>
<% End If %>
但是在一页中制作双重 View 是非常痛苦的。我宁愿有一个
ViewQuestion
View ,专用于显示常规或移动 View 。我也知道我不能使用
media=handheld
媒体类型。media=handheld
媒体类型 那么什么是接受 最能支持网站移动版本的源代码和 IIS 配置的组合?
编辑一:删除了对 MVC 的标题引用。不希望人们假设使用某些特定的 MVC 框架,因为我是 不是 使用任何MVC框架。我正在使用 ASP/ASP.net。
也可以看看
最佳答案
在 mvc 中,您可以通过覆盖 View 引擎来提交移动 View 。我们在大约 3 天内创建了我们网站的 iphone 版本。
http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx
关于asp.net - IIS/ASP/ASP.net : How to structure web-site to expose mobile version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278843/