Eu nunca antes reescrevi um URL, exceto pararemover a parte index.php das minhas instalações do CodeIgniter, e isso é feito usando um trecho copiado e copiado no meu arquivo .htaccess. Eu não tive tempo para realmente aprender sobre o que o snippet faz, eu sou basicamente muito novo para reescrever URLs.
Eu tenho uma versão móvel do meu aplicativo da web. Cheguei a redirecionar os usuários móveis para um subdomínio: m.myhost.tld
. No entanto, desde que eu estou usando (um) CodeIgniter (instalação), eu tenho que enviar esses usuários móveis para um controlador específico para celular, no meu caso /mobile/
. Então, o controlador sempre aparece na minha barra de endereços.
Eu apenas não acho que isso é muito limpo, e eu estou procurando uma maneira de reescrever a URL; mas verdade seja dita, eu nem tenho certeza se isso é possível .. daí a minha pergunta. Eu quero me livrar do /mobile
parte do controlador. Isso é possível?
Alguns exemplos:
Minha pasta "raiz" móvel atual é
http://m.myhost.tld/mobile
Eu gostaria de transformar este em
http://m.myhost.tld/
No momento, quando eu vou para http://m.myhost.tld/
, ele redireciona para o controlador padrão do meu aplicativo CodeIgniter, que faz parte da versão "desktop" do aplicativo da web.
Outro exemplo:
Girando
http://m.myhost.tld/mobile#mobile/about
para dentro
http://m.myhost.tld/#mobile/about
Eu não tenho certeza se estou fazendo algum sentido aqui. Eu estou na minha cabeça, mas como eu disse, eu não sei exatamente o que é possível. Se o usuário estiver no m
subdomínio, eu quero esconder o /mobile
parte dos meus URLs. No entanto, somente quando estamos "no m
subdomínio, então a versão "desktop" (que fica no www
) não é tocado de forma alguma.
Como eu disse algumas vezes agora, eu não tenho certezao que é possível e o que eu estou procurando pode ser muito complexo ou algo assim. Eu pensei em perguntar, já que aprender perguntando é o que eu faço de melhor. Por favor, não seja muito difícil para mim se isso se mostrar uma pergunta idiota, senhores profissionais;)
EDITAR: Eu pensei em editar porque não quero sair errado. Eu não estou necessariamente procurando respostas exatas para a minha pergunta. Eu também agradeço a documentação / tutoriais / artigos que podem me guiar para uma solução. Se eu conseguir chegar a uma solução, eu irei, claro, aprender muito. Mais.
Muito obrigado.
Respostas:
2 para resposta № 1Isso poderia ser muito simples de uma solução, mas por que não em sua configuração de roteamento fazer algo simples como
na sua configuração fazer algo como
if ($_SERVER["SERVER_NAME"] == "m.myhost.tld")
$route["default_controller"] = "mobile";
Isso tornaria o controlador padrão mobil para que você não tivesse que ter / mobile ...
Como eu disse, talvez simples demais
0 para resposta № 2
EDIT: Não funciona, mas talvez alguém pode transformá-lo em algo que faz
Tente isto:
RewriteCond $1!^mobile/
RewriteCond %{HTTP_HOST} ^m.myhost.tld
RewriteRule (.*) /mobile/$1 [L]