【发布时间】:2011-11-08 14:34:59
【问题描述】:
所以我想做的是将移动用户从现有页面发送到移动子域。下面是一个执行此操作的工作脚本。但是,我希望它将用户引导到正确的移动页面。例如发送 www.domain.ca/pages/news.html 到 m.domain.ca/m_pages/m_news.html
现在的问题是,如果用户例如从 RSS 提要进入新闻页面,他们将被重定向到主移动页面,而不是新闻页面。
我觉得这是一个很容易回答的问题,但我不熟悉 mod_rewrite 运算符。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^m\.domain\.ca$
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteCond %{HTTP_COOKIE} !mobilecookie=true
RewriteRule ^(.*)$ http://m.domain.ca [L,R=302]
在移动网站上,cookie 在到达时设置为 true。
我目前的命名方案是所有页面名称和文件夹名称都相同,并在前面附加 m_。两个站点的文件夹结构相同。
【问题讨论】:
-
“我目前的命名方案是所有页面名称和文件夹名称都相同,并在前面附加 m。”_ -- 如果两者都有,那就不好了所有页面的移动版和普通版。您应该有 2 个具有相同 URL 的独立站点 .. 或者移动域应该指向或位于不同的子文件夹中(但具有相同的页面名称)——然后这种重定向将很容易实现。但现在——每页几乎都需要一条规则……
-
假设我将文件名更改为相同,那我该怎么做呢?
-
像这样:
RewriteRule ^(.*)$ http://m.domain.ca%{REQUEST_URI} [L,R=302]。这会将www.example.com/hello/pink-kitten.png重定向到移动浏览器的m.example.com/hello/pink-kitten.png。
标签: apache .htaccess mod-rewrite mobile