Я собрал эти правила из разных источников, кто-нибудь из вас видит какие-либо подводные камни?
Я использую это для настройки мобильной версии сайта, работающего на 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. Что вы думаете?
Обновление об обновлении
Хм .. только что понял, что переход на http://www.domain.com/
с iPhone не работает, хотя и имеет. Добавление чего-либо к запросу, например http://www.domain.com/tracker
, правильно перенаправляет на http://www.domain.com/m/tracker
- поэтому, возможно, по этой причине iPad не показывает мобильный сайт (и у меня сейчас нет iPad).
Третье обновление
Был еще один пример проблемы с мобильным веб-сайтом, который не отображался при переходе непосредственно к http://www.domain.com/
. RewriteCond %{REQUEST_FILENAME} !-d
была проблема.