我已经从各种来源汇总了这些规则,你们有没有看到任何陷阱?mod_rewrite移动版
我使用它来设置ZendFramework支持的移动版网站。
# You ofcourse need this to start the magic, and mod_rewrite enabled ;)
RewriteEngine On
# iOS redirection.
# Make sure the URL hasn't already been rewritten internally
RewriteCond %{ENV:REDIRECT_STATUS} =""
# Make sure we don't redirect links from mobile to default (web) back to mobile
RewriteCond %{HTTP_REFERER} !domain\.com
RewriteCond %{REQUEST_URI} !^/m
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-s
# Don't use this Cond if you want direct requests on 'domain.tld' go to mobile
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{HTTP_USER_AGENT} .*Mobile.*Safari
RewriteRule ^(.*)$ /m/$1 [R,L]
# ZendFramework redirection
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteRule ^.*$ index.php [NC,L]
我不是一个mod_rewrite的专家,所以这是什么[R,L]和[NC,L]是什么意思?
更新
使用iPad刚刚测试过这一点,它不重定向。但是,再次,我猜iPad的移动版本不会被需要..你觉得呢?
更新的更新
嗯..刚刚意识到直接从iPhone将http://www.domain.com/
不工作,它虽然。像http://www.domain.com/tracker
这样的查询添加一些东西,正确地重定向到http://www.domain.com/m/tracker
- 所以也许这就是iPad没有显示移动网站的原因(我现在没有iPad)。
第三次更新
有另一个去的问题,移动网站,直接到http://www.domain.com/
时不显示。 RewriteCond %{REQUEST_FILENAME} !-d
是问题所在。
[NC]代表无案例,不区分大小写。 [L]代表最后,不要再处理任何规则。 [R]代表重定向,强制实际重定向回到浏览器。 http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule – 2011-03-07 11:13:53
谢谢大卫! – Phliplip 2011-03-07 12:23:55
我的荣幸。 ;-) – 2011-03-07 14:09:23