我已經從各種來源彙總了這些規則,你們有沒有看到任何陷阱?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