Если это не единственное правило в вашем файле .htaccess, у вас может возникнуть проблема, из-за которой более позднее правило испортит ваш редирект.Для немедленного перенаправления необходимо включить флаг L
.
Я также подозреваю, что ваше регулярное выражение для пользовательского агента, вероятно, не подходит для ввода, с которым вы тестируете, поскольку два .
соответствует только одному символу по обе стороны от слова "BlackBerry".Также было бы неплохо защититься от цикла перенаправления с проверкой, чтобы убедиться, что вы уже в /m/
(хотя, если у вас есть директивы mod_rewrite в файле .htaccess в этом каталоге, это не важно).
Собрав все это вместе, мы получим что-то вроде следующего:
# Check for x-wap-profile/Profile headers
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP:Profile} !^$ [OR]
# Check for BlackBerry anywhere in the user agent string
RewriteCond %{HTTP_USER_AGENT} BlackBerry [NC]
# Make sure we're not in /m/ already
RewriteCond %{REQUEST_URI} !^/m/
RewriteRule ^ http://example.com/m/ [R=301,L]
Вы также можете захотеть, чтобы RewriteRule
было ...
RewriteRule ^.*$ http://example.com/m/$0 [R=301,L]
...если в каталоге /m/
указано то же содержимое (но для мобильных устройств).