改写web.config中移动和桌面站点之间去(ReWrite in web.config to g

2019-10-18 15:34发布

我整理了一个新的移动网站恭维桌面版本。 目前,我有,看起来像这样在我的桌面网站的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);
            }
        }
文章来源: ReWrite in web.config to go between mobile and desktop sites