Eu vou ter uma facada.
No site completo vhost:
RewriteCond %{HTTP_USER_AGENT} Some-Mobile-UA [OR]
RewriteCond %{HTTP_USER_AGENT} Some-Other-Mobile-UA [OR]
RewriteCond %{HTTP_USER_AGENT} Yet-Another-Mobile-UA [OR]
RewriteCond %{HTTP_USER_AGENT} The-Final-Mobile-UA
RewriteCond /var/www/mobile%{REQUEST_URI} -f
RewriteCond %{HTTP_COOKIE} !stayOnFullSite
RewriteRule /(.*)l http://m.domain.com/$1 [R]
E no site móvel vhost:
RewriteCond %{QUERY_STRING} ver=full
RewriteRule ^ - [CO=stayOnFullSite:true]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond /var/www/html%{REQUEST_URI}l -f
RewriteRule /(.*) http://www.domain.com/$1l [R]
Notas:
Eu cortei o "l" do .html
ao redirecionar para o site para dispositivos móveis e o adicionei novamente ao redirecionar de volta.
Também o cortei ao verificar se o arquivo existe no site principal, mas não consigo descobrir como removê-lo ao verificar se o arquivo existe no site para dispositivos móveis. Possivelmente outro RewriteCond na frente dele que corresponda a todos menos o "l" final em %{REQUEST_URI}
e então use %1
no seguinte RewriteCond assim:
RewriteCond %{REQUEST_URI} (.*)l
RewriteCond /var/www/mobile%1 -f
Pode ser mais fácil padronizar seu site em uma única extensão de arquivo.
Você pode definir o restante dos parâmetros de cookie disponíveis. Os detalhes estão nos documentos do mod_rewrite e no seção sobre sinalizadores .
Esta configuração é completamente não testada.