Очевидно, что запросы к
example.com
и
m.example.com
для подобной конфигурации надо обрабатывать в разных блоках
server
(иначе получим бесконечный цикл переадресации):
server {
server_name example.com;
root /var/www/html;
set $mobile_redirect 0;
# Условие, которое здесь надо записать, смотрим на http://detectmobilebrowsers.com/
if (...) {
set $mobile_redirect 1;
}
if ($mobile_redirect) {
# Не нужен здесь rewrite и лишний вызов libpcre, достаточно return
return 301 https://m.example.com$request_uri;
}
location ^~ /mobile/ {
# Не надо из основного домена ходить в папку mobile
internal;
}
# остальная конфигурация
...
}
server {
server_name m.example.com;
root /var/www/html/mobile;
...
}