1

我正在完成一个新的移动网站来补充桌面版本。目前,我在桌面站点的 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 中检测,如果存在则不重定向到移动版本....我在 web.config 中有条件检查 http_cookie “nomobile ",但我认为它不能正常工作。我只是从手机发送一个查询字符串值并在 global.asax 文件中检查它还是因为 web.config 先运行而不起作用?

如果有任何帮助,桌面是 IIS 7.5 上的 C# MVC4 站点,而移动站点是一个简单的 jquery 移动站点。

谢谢!

编辑: 我尝试检查 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);
            }
        }
4

0 回答 0