【发布时间】:2011-07-13 19:48:27
【问题描述】:
假装我有一个现有的网站,例如:
www.stackoverflow.com
我现在想公开这个网站的移动版本:
m.stackoverflow.com
IIS 及其主机头名称解析通常需要创建 两个 网站:
- www.stackoverflow.com
- m.stackoverflow.com
除了现在我在 IIS 中有两个网站。这意味着我必须在它们之间复制代码/文件。我不需要(也不想)在两个网站之间复制所有“模型”和“控制器”代码。我宁愿有一个公开移动版本的网站。
我可以让m.stackoverflow.com 中的default 页面只需执行重定向到“真实”网站上的移动登录页面:
m.stackoverflow.com\default.asp:
<% Response.Redirect "www.stackoverflow.com/mobile" %>
然后客户端将结束于(例如)www.stackoverflow.com/mobile/default.aspx。
这不是我想要的。我希望在浏览器中显示他们正在访问m.stackoverflow.com。
所以我可以在 IIS 中为 一个 IIS 网站设置两个主机头名称:
- stackoverflow.com
- m.stackoverflow.com
并检查 http-request 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 %>
但是在一个页面中制作双视图是非常痛苦的。我更喜欢有一个ViewQuestion 视图,专门用于显示常规或移动视图。
我也知道我不能使用media=handheld 媒体类型。
- 我不仅想要将“完整”页面内容发送到移动客户端(浪费他们的带宽和下载速度)然后基于 CSS 隐藏内容
- 并非所有手持设备(例如 iPhone)都支持
media=handheld媒体类型
那么,接受最能支持移动版网站的源代码和 IIS 配置组合是什么?
编辑一:删除了对 MVC 的标题引用。不希望人们假设使用某些特定的 MVC 框架,因为我不使用任何 MVC 框架。我正在使用 ASP/ASP.net。
另见
【问题讨论】:
-
使用响应式布局,更简单更好的方式。大约在这里:stackoverflow.com/questions/6844020/…
标签: asp.net iis mobile mobile-website