Olá @marcleiton,
A melhor solução é de longe a apontada pelo @felipeloureirosantos, ou seja, a criação de um site “responsivo”, em que o mesmo HTML é servido para todos os aparelhos, mas com CSS diferente para cada tamanho de tela. É o método recomendado pelo Google em termos de SEO. Há muitos temas que já são responsivos, então uma possibilidade seria pesquisar e mudar de tema.
A segunda melhor alternativa, na minha opinião, é usar o Cloudflare e configurar nele o redirecionamento para aparelhos móveis. É preciso ter um subdomínio (tipo m.) específico para o redirecionamento. Isso evita ter de programar e se preocupar com cache no servidor.
Que eu saiba, toda solução para redirecionar para móvel tem base numa expressão regular que filtra as solicitações HTTP fazendo algum tipo de correspondência com o agente de usuário. É assim que o próprio Cloudflare faz. Por esse motivo, toda solução que tiver essa base vai ser falha, pois não há como controlar o navegador de visitantes, que podem bloquear ou “higienizar” o agente de usuário, seja por alguma configuração de privacidade do navegador, seja por alguma extensão voltada para o controle da privacidade, bloqueio de anúncios etc.
Então quando vc tiver seu site mobile prontinho, vai ter sempre gente reclamando, pois alguns verão a versão não-responsiva para desktop caso aconteça de o navegador/extensão bloquear o AU, ou até mesmo se a expressão regular não conseguir identificar o dispositivo (é grande a variedade de modelos e não pára de crescer a quantidade de agentes de usuário).
A expressão regular que o Cloudflare usa para mobile é essa aqui:
(?:phone|windows\s+phone|ipod|blackberry|(?:android|bb\d+|meego|silk|googlebot) .+? mobile|palm|windows\s+ce|opera\smini|avantgo|mobilesafari|docomo)
Eu tirei essa expressão de uma página que fala de cache, mas acho difícil que eles usem uma expressão para cache e outra para o redirecionamento. A única coisa é que para efeito de redirecionamento, não tem tablet; ou é mobile, ou é desktop. Note que está toda em caixa baixa, então é preciso qualificar a Regex com a bandeirola /i (case insensitive).
O plugin que eu uso para redirecionamento é o Redirection, que pode ser configurado para usar Regex tanto na URL quanto no agente de usuário.
Caso vc parta para programar sua própria solução, lembre-se que além de identificar o dispositivo pelo agente de usuário, será preciso “normalizar” as solicitações, do contrário seu servidor vai criar um cache para casa AU, o que na prática seria o mesmo que nem ter cache. É preciso pensar em termos de:
Se corresponder à Regex para mobile > cache da página para mobile
Se não corresponder, cache da página para desktop.
Espero que ajude de alguma maneira. Sucesso!