我整理了一个新的移动网站恭维桌面版本。 目前,我有,看起来像这样在我的桌面网站的web.config文件重写规则:
<system.webServer>
<rewrite>
<rules>
<rule name="MobileRedirect" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_COOKIE}" pattern="nomobile" ignoreCase="true" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos" />
</conditions>
<action type="Redirect" url="http://m.mysite.com" appendQueryString="false" redirectType="Found" />
</rule>
</rules>
</rewrite>
这完美的作品,如果我从来不希望用户能够使用桌面版网站,同时在移动设备上,但事实并非总是如此。 移动网站上的某些环节上做到链接返回到桌面版本。 我对移动网站底部的链接“查看完整的站点”为好。
所以我的问题是:如何正确处理cookie,可以设置该链接,然后检测在web.config和NOT重定向到移动版本,如果它的存在....我在web.config中的HTTP_COOKIE条件检查“nomobile ”但我不认为这是正常工作。 难道我只是在一个查询字符串值发送从移动,并检查在Global.asax文件,或者因为在web.config首先运行不说不行?
桌面是在IIS 7.5中一个C#MVC4网站,如果任何的帮助,以及移动网站是一个简单的jQuery Mobile的网站。
谢谢!
编辑:我曾尝试检查在Global.asax文件(下面的代码)的查询字符串,但似乎“请求是不是在这方面可用”。
// create and set cookie if ?nomobile detected
string forcedesktop = HttpContext.Current.Request["nomobile"];
if(forcedesktop != null){
HttpCookie nomobile = new HttpCookie("nomobile");
Request.Cookies.Add(nomobile);
}
}