Pretend i have an existing web-site, e.g.:
www.stackoverflow.com
i now want to expose a mobile version of this web-site:
m.stackoverflow.com
IIS, with its host-header name resolution, would normally require two web-sites to be created:
- www.stackoverflow.com
- m.stackoverflow.com
Except now i have two web-sites in IIS. This means i have to duplicate code/files between them. i don't need to (nor do i want to) duplicate all the "model" and "controller" code between two web-sites. i would much rather have one web-site that exposes a mobile version.
i could have the default
page in m.stackoverflow.com
simply perform a redirect to a mobile landing page on the "real" web-site:
m.stackoverflow.com\default.asp
:
<% Response.Redirect "www.stackoverflow.com/mobile" %>
Then the client will end up at (for example) www.stackoverflow.com/mobile/default.aspx
.
This isn't what i want. i want it to appear to the browser that they are visiting m.stackoverflow.com
.
So what i could do in IIS is have two host-header names for one IIS web-site:
- stackoverflow.com
- m.stackoverflow.com
and inspect the http-request HOST
header:
GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: stackoverflow.com
verses
GET https://stackoverflow.com/questions/ViewQuestion.aspx?qid=3623844
Host: m.stackoverflow.com
Except now my all my web-site pages must first inspect Host
attribute, and then change rendering behavior depending on which it finds. This works somewhat well in classic ASP:
ViewQuestion.asp
<% Dim mobileVersion
...
If MobileVersion Then
%>
<html>
...
</html>
<% Else %>
<html>
...
</html>
<% End If %>
But making dual view's in one page is very painful. i would prefer to have a ViewQuestion
view, that is dedicated to showing a regular or mobile view.
i also know that i can't use the media=handheld
media type.
- not only do i not want to have "full" page content being sent to mobile clients (wasting their bandwidth and download speed) and then hide content based on CSS
- not all handhelds (e.g. iPhone) honor the
media=handheld
media type
So what is the accepted combination of source-code and IIS configuration that best supports mobile versions of a web-site?
Edit One: Removed title reference to MVC. Don't want people to assume the use of some particular MVC framework, since i'm not using any MVC framework. i'm using ASP/ASP.net.
See also
- Redirect mobile devices to alternate version of my site
- How to create mobile version of asp.NET web site?
- Creating a mobile version of a website
- What's the most efficient way to hide content for a mobile version of a site?
- A Better ASP.NET MVC Mobile Device Capabilities ViewEngine