Como pode uma URL como http: trabalho //localhost/index.php/articles/edit/1/my-first-article sem um .htaccess?

StackOverflow https://stackoverflow.com/questions/966916

Pergunta

Eu não entendo isto:

http: //localhost/index.php/articles/edit / 1 / meu-primeiro-artigo

Este URL é mencionado como um exemplo na Kohana quadro documentação . Eu remexia nos arquivos da minha instalação, e não há .htaccess além da minha própria que não tem nada a ver com isso.

Então, como pode ser que um index.php é chamado, mas então, como parâmetros, os olhares coisas como adicionado diretórios para o URL? Será que isso não olhar "real".

Ou é este / stuff quão nativa PHP / Apache HTTP realmente funciona? Pelo que entendi, / está sempre a dizer "hey, um diretório!". Faz realmente sentido zero para mim ... Como é isso possível? Ou têm algum lugar um .htaccess que eu simplesmente não consigo ver / encontrar?

Foi útil?

Solução

No PHP você pode obter os dados após o nome do arquivo com a $_SERVER["PATH_INFO"] variável. Isso permite que você obtenha basicamente informações sem ter que variáveis ??começar a usar, o que significa Google e co vai pensar que você está usando páginas estáticas. Esta é basicamente uma alternativa para mod_rewrite que muitas vezes é ativado enquanto mod_rewrite mais frequentemente não está habilitado.

Isto pode ser óbvio para você, mas não foi imediatamente para mim, isso não funciona corretamente em páginas de índice a menos que você use o nome do arquivo. Por exemplo, http://example.com/test/my/get/params não vai funcionar, enquanto http://example.com/test/index.php/my/get/params vai.

Outras dicas

A partir da Apache docs :

AcceptPathInfo directiva

Esta directiva controla se solicitações que contêm fuga informações caminho que segue um filename real (ou arquivo inexistente em um diretório existente) será aceito ou rejeitado. a fuga informações caminho pode ser feita disponível para scripts no PATH_INFO variável de ambiente.

Por exemplo, suponha que o local / test / aponta para um diretório que contém apenas o arquivo único here.html. pedidos, em seguida, para /test/here.html/more e /test/nothere.html/more tanto recolha / Mais como PATH_INFO.

Então, eu assumo essa configuração estiver ativada em algum lugar como no httpd.conf. Note que este, como mod_rewrite, pode ser habilitado / configurado em um número de lugares - veja aqui .

AcceptPathInfo está ligado para o seu servidor. :)

Eu não estou usando Kohana, então eu não sei se o meu método vai ser de alguma utilidade, mas quando um servidor não suporta arquivos .htaccess (ou reescrever regras) meu 'framework' gera URI como este:

http://www.domain.com/? / artigos / edit / 1 / meu-primeiro-artigo (aviso a?)

É um método semelhante ao utilizado pelo quadro sapo, apenas $_SERVER['REQUEST_URI'] parse (ou $_SERVER['HTTP-X-REWRITE-URL'] em servidores Windows) e explodir na '/'.

Este método é completamente reescrever independente e ainda gera mais ou menos SEO amigável da URI

A esperança é de qualquer utilidade para você.

Provavelmente não é o caso aqui, e certamente não é recomendado, e provavelmente não a resposta certa ...

Mas ...

Eu vi pessoas usam 404 páginas para analisar o pedido e, em seguida, incluir a página direita com essa informação.

Veja PATH_INFO em CGI Ambiente .

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