Reencaminhar url para ocultar index.php e fazer uma consulta agradável

Desenvolvi projeto com arquitetura MVC personalizada. E eu sou novo no mundo Apache, então eu apreciaria a ajuda com este assunto. Em uma Web eu tinha encontrado muitos tutoriais, mas ninguém gosta de interesses de minas.

Eu tenho um URL como este: http://knjiskicrv.comoj.com/index.php?page=book&id=1

Gostaria de ser exibido assim: http://knjiskicrv.comoj.com/book/id/1

Ou isso: http://knjiskicrv.comoj.com/index.php?page=faq Para isso: http://knjiskicrv.comoj.com/faq

Se não houver nenhuma page em consulta (http://knjiskicrv.comoj.com/index.php), gostaria de mostrar: http://knjiskicrv.comoj.com/

Também sem page em consulta (http://knjiskicrv.comoj.com/index.php?category=2), deve ser assim http://knjiskicrv.comoj.com/category/2

Espero que alguém ajude. Obrigado.

Na verdade, seu problema é um problema de dois passos. Você primeiro precisa entender o que é “Roteamento” no MVC. Se você tiver sua própria implementação de um MVC como framework e você não suportar o roteamento, provavelmente significa que você nem sabia como funcionou antes. (Triste mas verdadeiro)

Em uma estrutura MVC, você configura rotas usando um ROUTER e o roteador analisa as URLs para você dizendo HEY, encontrei essa url que corresponde ao seu pedido, vá em frente e trabalhe com ele.

Então, seu controlador recebe uma solicitação para rotear em si e PARSES o url como ele entender. Como usar explodir (‘/’, $ _SERVER [‘REQUEST_URI’]) e depois ler as diferentes partes do URL para mapear as variables ​​esperadas.

Tudo isso é muito teórico porque existem ZILLÕES de maneiras de implementá-lo de forma personalizada. A única coisa que você terá que usar é uma pequena magia mod_rewrite para passar todas as solicitações ao seu index.php que encaminhará tudo. Olhe para o URL abaixo para aprender sobre mod_rewrite, é um assunto MUITO COMPLEXO:

http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/

O que eu costumo fazer, mas não tenho access a ele em casa é algo assim:

 RewriteEngine On RewriteCond %{REQUEST_URI} !^assets/ RewriteRule .* index.php 

Isso redirectá todo o tráfego para index.php e você pode usar $ _SERVER [‘REQUEST_URI’] para analisar o pedido. Tudo em ativos / pasta não será tocado e funcionará corretamente.

Note, eu construí essa parte do meu chapéu, pode não funcionar …