Представьте, что у меня есть существующий веб-сайт, например:
www.stackoverflow.com
Теперь я хочу показать мобильную версию этого веб-сайта:
m.stackoverflow.com
IIS с разрешением имени заголовка узла обычно требует создания двух веб-сайтов.:
- www.stackoverflow.com
- m.stackoverflow.com
За исключением того, что сейчас у меня есть два веб-сайта в IIS.Это означает, что я должен дублировать код / файлы между ними.мне не нужно (и не хочу) дублировать весь код "model" и "controller" между двумя веб-сайтами.Я бы предпочел иметь один веб-сайт, который предоставляет мобильную версию.
i может иметь страницу 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 - это иметь два имени заголовка узла для one Веб-сайт IIS:
- stackoverflow.com
- m.stackoverflow.com
и проверка http-запроса 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
За исключением того, что теперь все мои страницы моего веб-сайта должны сначала проверить атрибут Host
, а затем изменить поведение рендеринга в зависимости от того, что он находит,Это хорошо работает в классическом ASP:
ViewQuestion.asp
<% Dim mobileVersion
...
If MobileVersion Then
%>
<html>
...
</html>
<% Else %>
<html>
...
</html>
<% End If %>
Но создание двойного просмотра на одной странице очень болезненно.я бы предпочел бы иметь ViewQuestion
представление, предназначенное для показа обычного или мобильного представления.
я также знаю, что не могу использовать media=handheld
тип носителя.
- я не только не хочу, чтобы отправлял "полный" контент страницы на мобильные клиенты (тратя их пропускную способность и скорость загрузки), а затем скрывал контент на основе CSS
- не все карманные компьютеры (например, iPhone) соответствуют типу
media=handheld
мультимедиа
Итак, какова принятая комбинация исходного кода и конфигурации IIS, котораялучше всего поддерживает мобильные версии веб-сайта?
Edit One: Удалена заголовочная ссылка на MVC.Не хочу, чтобы люди предполагали использование какой-то конкретной инфраструктуры MVC, поскольку я не использую какую-либо инфраструктуру MVC.Я использую ASP / ASP.net.
См. также