Pergunta

Já vi isso mencionado em muitos blogs pela rede, mas acredito que deveria ser discutido aqui.O que podemos fazer quando temos um framework MVC (estou interessado em ZEND) em PHP mas nosso host não fornece mod_rewrite?Existem "atalhos"?Podemos transferir o controle de alguma forma (para que possa ocorrer um mapeamento entre as páginas)?Alguma ideia?Obrigado :-)

Foi útil?

Solução

A estrutura Zend deve funcionar sem mod_rewrite.Se você consegue conviver com seus URLs mais parecidos com "/path/to/app/index.php/controller/action".Se você tivesse o mod_rewrite, você poderia eliminar o bit "index.php", mas também deveria funcionar.

É tudo uma questão de configurar as rotas para aceitar a parte index.php.

Outras dicas

OK, meu veredicto :-):Eu usei o zend com sucesso sem mod_rewrite e é como todos vocês disseram site/index.php/controller/action.Eu sabia disso antes de postar isso.Também descobri na rede uma técnica que "empurra" 404 páginas para index.php, portanto, o que não é um recurso (por exemplo.CSS, imagem, etc) chega lá, com uma exceção:Valores POST.Então decidi que da próxima vez que uma aplicação tiver que ser feita no servidor específico, pedir educadamente o mod_rewrite.Se o administrador não puder fornecer, fale com meu chefe ou se for para mim, troque de provedor.Geralmente é uma pena que às vezes o mercado PHP seja tão fragmentado (php4, php5, php6, mod_rewrite, mod_auth, mod_whatever), mas isso é outra história...

mod_rewrite é quase essencial no ambiente de hospedagem atual... mas infelizmente nem todos entenderam a mensagem.

Muitos dos grandes programas php (estou pensando em magento, mas a maioria consegue lidar) têm um modo de fallback de URL bonito para quando o mod_rewrite não estiver disponível.

URLs acabam parecendo www.site.com/index.php?load-this-page

Eles devem estar executando alguma mágica para pegar o nome da variável $_GET e usá-lo como seletor de qual módulo/recurso executar.

Em uma nota relacionada, vi muitos URLs confusos no novo site do Facebook onde está usando o #.Portanto, os links se parecem com www.new.facebook.com/home.php#/inbox/ Claramente, não devemos ver isso, mas isso sugere que eles provavelmente estão analisando a variável $_SERVER['REQUEST_URI'] .

Se você encontrar uma maneira não mod_rewrite de redirecionar todas as solicitações para index.php (ou onde quer que esteja seu script de inicialização), você pode, como mencionado acima, usar 'REQUEST_URI' para capturar a parte do endereço após o domínio e então analisar como quiser e faça com que a solicitação faça o que você deseja.É assim que o Wordpress faz (concedido, com mod_rewrite).Contanto que você possa redirecionar solicitações para sua página de índice enquanto mantém o mesmo URI, você pode fazer o que for necessário para processar a solicitação.

As regras de reescrita do Drupal são traduzidas

http://example.com/path/goes/here

em

http://example.com/index.php?q=path/goes/here

...e tem lógica para decidir qual tipo de URLs gerar.Se você puder conviver com URLs feios, isso permitirá que você mantenha toda a lógica de um único front controller em vigor, sem depender da reescrita de URL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top